xml - Import NVD data feed to MS access database -


with reference existing question how parse nvd cve xml , import database managed give partial answer to, need extend question (and not comment on existing question)

i need import xml data https://nvd.nist.gov/download.cfm ms access.

[edit]

the structure in database looking create follows:

maintable(entry)

  • element(vuln:cve-id)
  • element(vuln:vulnerable-configuration)
  • element(vuln:summary)
  • element(vuln:published-datetime)
  • element(vuln:last-modified-datetime)
  • element(cvss:score)
  • element(cvss:access-vector)
  • element(cvss:access-complexity)
  • element(cvss:source)
  • element(cvss:generated-on-datetime)
  • atribute(entry id)
  • atribute(vuln:assessment_check system)
  • atribute(vuln:assessment_check href)
  • atribute(vuln:assessment_check name)
  • atribute(vuln:cwe id) atribute(vuln:vulnerable-configuration id)
  • atribute(cpe-lang:logical-test operator)
  • atribute(cpe-lang:logical-test negate)

childtable(fact-ref)

  • element(vuln:cve-id) [from entry table]
  • atribute(cpe-lang:fact-ref name)

childtable(product)

  • element(vuln:cve-id) [from entry table]
  • element(vuln:product)

childtable(references)

  • element(vuln:cve-id) [from entry table]
  • element(vuln:source)
  • element(vuln:reference)
  • atribute(vuln:references xml:lang)
  • atribute(vuln:references reference_type)

childtable(scanner)

  • element(vuln:cve-id) [from entry table]
  • atribute(vuln:definition system)
  • atribute(vuln:definition href)
  • atribute(vuln:definition name)

however, if e.g. records in segment cvss:base_metrics end in separate table not big problem.

the following xml abridged still valid set of xml contains 2 entry records, , no more 3 child records per child table.

<?xml version='1.0' encoding='utf-8'?> <nvd xmlns:scap-core="http://scap.nist.gov/schema/scap-core/0.1" xmlns:cvss="http://scap.nist.gov/schema/cvss-v2/0.2" xmlns:vuln="http://scap.nist.gov/schema/vulnerability/0.4" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:patch="http://scap.nist.gov/schema/patch/0.1" xmlns="http://scap.nist.gov/schema/feed/vulnerability/2.0" xmlns:cpe-lang="http://cpe.mitre.org/language/2.0" nvd_xml_version="2.0" pub_date="2016-06-17t05:29:06" xsi:schemalocation="http://scap.nist.gov/schema/patch/0.1 http://nvd.nist.gov/schema/patch_0.1.xsd http://scap.nist.gov/schema/feed/vulnerability/2.0 http://nvd.nist.gov/schema/nvd-cve-feed_2.0.xsd http://scap.nist.gov/schema/scap-core/0.1 http://nvd.nist.gov/schema/scap-core_0.1.xsd">   <entry id="cve-2003-0001">     <vuln:vulnerable-configuration id="http://www.nist.gov/">       <cpe-lang:logical-test operator="or" negate="false">         <cpe-lang:fact-ref name="cpe:/o:freebsd:freebsd:4.2"/>         <cpe-lang:fact-ref name="cpe:/o:microsoft:windows_2000_terminal_services::sp2"/>         <cpe-lang:fact-ref name="cpe:/o:netbsd:netbsd:1.5"/>       </cpe-lang:logical-test>     </vuln:vulnerable-configuration>     <vuln:vulnerable-software-list>       <vuln:product>cpe:/o:freebsd:freebsd:4.7</vuln:product>       <vuln:product>cpe:/o:linux:linux_kernel:2.4.10</vuln:product>       <vuln:product>cpe:/o:microsoft:windows_2000::sp2:datacenter_server</vuln:product>     </vuln:vulnerable-software-list>     <vuln:cve-id>cve-2003-0001</vuln:cve-id>     <vuln:published-datetime>2003-01-17t00:00:00.000-05:00</vuln:published-datetime>     <vuln:last-modified-datetime>2016-06-16t21:59:02.180-04:00</vuln:last-modified-datetime>     <vuln:cvss>       <cvss:base_metrics>         <cvss:score>5.0</cvss:score>         <cvss:access-vector>network</cvss:access-vector>         <cvss:access-complexity>low</cvss:access-complexity>         <cvss:source>http://nvd.nist.gov</cvss:source>         <cvss:generated-on-datetime>2016-06-13t11:15:01.477-04:00</cvss:generated-on-datetime>       </cvss:base_metrics>     </vuln:cvss>     <vuln:assessment_check system="http://oval.mitre.org/xmlschema/oval-definitions-5" href="http://oval.mitre.org/repository/data/getdef?id=oval:org.mitre.oval:def:2665" name="oval:org.mitre.oval:def:2665"/>     <vuln:cwe id="cwe-200"/>     <vuln:references xml:lang="en" reference_type="vendor_advisory">       <vuln:source>cert-vn</vuln:source>       <vuln:reference href="http://www.kb.cert.org/vuls/id/412115" xml:lang="en">vu#412115</vuln:reference>     </vuln:references>     <vuln:references xml:lang="en" reference_type="unknown">       <vuln:source>bugtraq</vuln:source>       <vuln:reference href="http://www.securityfocus.com/archive/1/archive/1/307564/30/26270/threaded" xml:lang="en">20030117 re: more information regarding etherleak</vuln:reference>     </vuln:references>     <vuln:references xml:lang="en" reference_type="unknown">       <vuln:source>bugtraq</vuln:source>       <vuln:reference href="http://www.securityfocus.com/archive/1/archive/1/305335/30/26420/threaded" xml:lang="en">20030106 etherleak: ethernet frame padding information leakage (a010603-1)</vuln:reference>     </vuln:references>     <vuln:scanner>       <vuln:definition system="http://oval.mitre.org/xmlschema/oval-definitions-5" href="http://oval.mitre.org/repository/data/downloaddefinition?id=oval:org.mitre.oval:def:2665" name="oval:org.mitre.oval:def:2665"/>     </vuln:scanner>     <vuln:summary>multiple ethernet network interface card (nic) device drivers not pad frames null bytes, allows remote attackers obtain information previous packets or kernel memory using malformed packets, demonstrated etherleak.</vuln:summary>   </entry>   <entry id="cve-2003-0002">     <vuln:vulnerable-configuration id="http://nvd.nist.gov/">       <cpe-lang:logical-test operator="or" negate="false">         <cpe-lang:fact-ref name="cpe:/a:microsoft:content_management_server:2001"/>         <cpe-lang:fact-ref name="cpe:/a:microsoft:content_management_server:2001:sp1"/>       </cpe-lang:logical-test>     </vuln:vulnerable-configuration>     <vuln:vulnerable-software-list>       <vuln:product>cpe:/a:microsoft:content_management_server:2001</vuln:product>       <vuln:product>cpe:/a:microsoft:content_management_server:2001:sp1</vuln:product>     </vuln:vulnerable-software-list>     <vuln:cve-id>cve-2003-0002</vuln:cve-id>     <vuln:published-datetime>2003-02-07t00:00:00.000-05:00</vuln:published-datetime>     <vuln:last-modified-datetime>2008-09-10t20:05:22.087-04:00</vuln:last-modified-datetime>     <vuln:cvss>       <cvss:base_metrics>         <cvss:score>6.8</cvss:score>         <cvss:access-vector approximated="true">network</cvss:access-vector>         <cvss:access-complexity approximated="true">medium</cvss:access-complexity>         <cvss:authentication approximated="true">none</cvss:authentication>         <cvss:generated-on-datetime>2004-01-01t00:00:00.000-05:00</cvss:generated-on-datetime>       </cvss:base_metrics>     </vuln:cvss>     <vuln:security-protection>allows_other_access</vuln:security-protection>     <vuln:references xml:lang="en" reference_type="vendor_advisory">       <vuln:source>ms</vuln:source>       <vuln:reference href="http://www.microsoft.com/technet/security/bulletin/ms03-002.asp" xml:lang="en">ms03-002</vuln:reference>     </vuln:references>     <vuln:references xml:lang="en" reference_type="vendor_advisory">       <vuln:source>xf</vuln:source>       <vuln:reference href="http://www.iss.net/security_center/static/10318.php" xml:lang="en">mcms-manuallogin-reasontxt-xss (10318)</vuln:reference>     </vuln:references>     <vuln:summary>cross-site scripting vulnerability (xss) in manuallogin.asp script microsoft content management server (mcms) 2001 allows remote attackers execute arbitrary script via reasontxt parameter.</vuln:summary>   </entry> </nvd> 

[end edit]

i able import tables, , able add link vuln:cve-id key child tables import except child table vuln:vulnerable-configuration.

i have 2 main problems:

  1. i can not import attributes elements

  2. when child table has more 1 record relating main table entry last record in xml imported ms access. [edit, solved, see below, end edit]

first issue 1) have tried use following code import attributes,

<xsl:stylesheet version="1.0" xmlns:scap-core="http://scap.nist.gov/schema/scap-core/0.1" xmlns:cvss="http://scap.nist.gov/schema/cvss-v2/0.2" xmlns:vuln="http://scap.nist.gov/schema/vulnerability/0.4" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:patch="http://scap.nist.gov/schema/patch/0.1" xmlns="http://scap.nist.gov/schema/feed/vulnerability/2.0" xmlns:cpe-lang="http://cpe.mitre.org/language/2.0" xsi:schemalocation="http://scap.nist.gov/schema/patch/0.1 http://nvd.nist.gov/schema/patch_0.1.xsd http://scap.nist.gov/schema/feed/vulnerability/2.0 http://nvd.nist.gov/schema/nvd-cve-feed_2.0.xsd http://scap.nist.gov/schema/scap-core/0.1 http://nvd.nist.gov/schema/scap-core_0.1.xsd" xmlns:xsl="http://www.w3.org/1999/xsl/transform">   <xsl:output indent="yes"/>  <xsl:template match="@* | node()">     <xsl:copy>         <xsl:apply-templates select="@* | node()"/>     </xsl:copy> </xsl:template>  <xsl:template match="@*"> <xsl:element name="{name()}">   <xsl:value-of select="."/> </xsl:element> </xsl:template> </xsl:stylesheet> 

it works long not use name spaces, use xmlns define name space in xslt file ms access throws me error "prefixes 'xml' , 'xmlns' reserved use xml." if use following xslt , not attempt conversion of attribute element ms access ok using same xmlns commands.

<xsl:stylesheet version="1.0" xmlns:scap-core="http://scap.nist.gov/schema/scap-core/0.1" xmlns:cvss="http://scap.nist.gov/schema/cvss-v2/0.2" xmlns:vuln="http://scap.nist.gov/schema/vulnerability/0.4" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:patch="http://scap.nist.gov/schema/patch/0.1" xmlns="http://scap.nist.gov/schema/feed/vulnerability/2.0" xmlns:cpe-lang="http://cpe.mitre.org/language/2.0" xsi:schemalocation="http://scap.nist.gov/schema/patch/0.1 http://nvd.nist.gov/schema/patch_0.1.xsd http://scap.nist.gov/schema/feed/vulnerability/2.0 http://nvd.nist.gov/schema/nvd-cve-feed_2.0.xsd http://scap.nist.gov/schema/scap-core/0.1 http://nvd.nist.gov/schema/scap-core_0.1.xsd" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output indent="yes"/> <xsl:strip-space elements="*"/>  <xsl:template match="/">     <dataroot>         <xsl:apply-templates select="@*|node()"/>     </dataroot> </xsl:template>  <xsl:template match="@*|node()">     <xsl:copy>         <xsl:apply-templates select="@*|node()"/>     </xsl:copy> </xsl:template>  <xsl:template match="entry">     <xsl:apply-templates select="@*|node()"/> </xsl:template>  <xsl:template match="cpe-lang:logical-test">     <cpe-lang:logical-test>         <vuln:cve-id><xsl:value-of select="../../vuln:cve-id"/></vuln:cve-id>         <xsl:apply-templates select="@*|node()"/>     </cpe-lang:logical-test> </xsl:template>  <xsl:template match="vuln:vulnerable-configuration">     <vuln:vulnerable-configuration>         <vuln:cve-id><xsl:value-of select="../../vuln:cve-id"/></vuln:cve-id>         <xsl:apply-templates select="@*|node()"/>     </vuln:vulnerable-configuration> </xsl:template>  <xsl:template match="vuln:vulnerable-software-list">     <vuln:vulnerable-software-list>         <vuln:cve-id><xsl:value-of select="../vuln:cve-id"/></vuln:cve-id>         <xsl:apply-templates select="@*|node()"/>     </vuln:vulnerable-software-list> </xsl:template>  <xsl:template match="cvss:base_metrics">     <cvss:base_metrics>         <vuln:cve-id><xsl:value-of select="../../vuln:cve-id"/></vuln:cve-id>         <xsl:apply-templates select="@*|node()"/>     </cvss:base_metrics> </xsl:template>  <xsl:template match="vuln:references">     <vuln:references>         <vuln:cve-id><xsl:value-of select="../vuln:cve-id"/></vuln:cve-id>         <xsl:apply-templates select="@*|node()"/>     </vuln:references> </xsl:template>  <xsl:template match="vuln:scanner">     <vuln:scanner>         <vuln:cve-id><xsl:value-of select="../vuln:cve-id"/></vuln:cve-id>         <xsl:apply-templates select="@*|node()"/>     </vuln:scanner> </xsl:template> 

issue 2) when child table has more 1 record relating main table entry last record in xml imported ms access. using code above importing elements.

[edit] have managed resolve issue 2 correcting following piece of code in xslt file:

    <xsl:template match="element1">     <element2>         <vuln:cve-id><xsl:value-of select="../../vuln:cve-id"/></vuln:cve-id>         <xsl:apply-templates select="@*|node()"/>     </element2> </xsl:template> 

element1 reference point contains multiple child elements in source xml.

element2 /element2 resulting xml code, in case same element1, choosing different element1 & element2 1 can modify structure of resulting xml. directory structure jumps represented ../../ number of steps select , copy vuln:cve-id entry record. depending on how many levels of child elements have, may need use either ../ or ../../ or none.

the code works me pulling out of records , child records, @ least ones interested in below. note not pull out child tables per original xml, give me need. 1 of simplifications have made child tables linked vuln:cve-id though source xml has child tables within child tables, prefer flatter structure.

<xsl:stylesheet version="1.0" xmlns:scap-core="http://scap.nist.gov/schema/scap-core/0.1" xmlns:cvss="http://scap.nist.gov/schema/cvss-v2/0.2" xmlns:vuln="http://scap.nist.gov/schema/vulnerability/0.4" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:patch="http://scap.nist.gov/schema/patch/0.1" xmlns="http://scap.nist.gov/schema/feed/vulnerability/2.0" xmlns:cpe-lang="http://cpe.mitre.org/language/2.0" xsi:schemalocation="http://scap.nist.gov/schema/patch/0.1 http://nvd.nist.gov/schema/patch_0.1.xsd http://scap.nist.gov/schema/feed/vulnerability/2.0 http://nvd.nist.gov/schema/nvd-cve-feed_2.0.xsd http://scap.nist.gov/schema/scap-core/0.1 http://nvd.nist.gov/schema/scap-core_0.1.xsd" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output indent="yes"/> <xsl:strip-space elements="*"/>  <xsl:template match="/">     <dataroot>         <xsl:apply-templates select="@*|node()"/>     </dataroot> </xsl:template>  <xsl:template match="@*|node()">     <xsl:copy>         <xsl:apply-templates select="@*|node()"/>     </xsl:copy> </xsl:template>  <xsl:template match="entry">     <xsl:apply-templates select="@*|node()"/> </xsl:template>  <xsl:template match="cpe-lang:logical-test">     <cpe-lang:logical-test>         <vuln:cve-id><xsl:value-of select="../../vuln:cve-id"/></vuln:cve-id>         <xsl:apply-templates select="@*|node()"/>     </cpe-lang:logical-test> </xsl:template>  <xsl:template match="vuln:vulnerable-configuration">     <vuln:vulnerable-configuration>         <vuln:cve-id><xsl:value-of select="../vuln:cve-id"/></vuln:cve-id>         <xsl:apply-templates select="@*|node()"/>     </vuln:vulnerable-configuration> </xsl:template>  <xsl:template match="cpe-lang:logical-test">     <cpe-lang:logical-test>         <vuln:cve-id><xsl:value-of select="../../vuln:cve-id"/></vuln:cve-id>         <cpe-lang:logical-test><xsl:value-of select="../cpe-lang:logical-test"/></cpe-lang:logical-test>         <xsl:apply-templates select="@*|node()"/>     </cpe-lang:logical-test> </xsl:template>  <xsl:template match="cpe-lang:fact-ref">     <cpe-lang:fact-ref>         <vuln:cve-id><xsl:value-of select="../../../vuln:cve-id"/></vuln:cve-id>         <cpe-lang:fact-ref><xsl:value-of select="../cpe-lang:fact-ref"/></cpe-lang:fact-ref>         <xsl:apply-templates select="@*|node()"/>     </cpe-lang:fact-ref> </xsl:template>   <xsl:template match="vuln:vulnerable-software-list">     <vuln:vulnerable-software-list>         <vuln:cve-id><xsl:value-of select="../vuln:cve-id"/></vuln:cve-id>         <xsl:apply-templates select="@*|node()"/>     </vuln:vulnerable-software-list> </xsl:template>  <xsl:template match="vuln:product">     <vuln:product>         <vuln:cve-id><xsl:value-of select="../../vuln:cve-id"/></vuln:cve-id>         <vuln:product><xsl:value-of select="."/></vuln:product>         <xsl:apply-templates select="@*|node()"/>     </vuln:product> </xsl:template>  <xsl:template match="cvss:base_metrics">     <cvss:base_metrics>         <vuln:cve-id><xsl:value-of select="../../vuln:cve-id"/></vuln:cve-id>         <xsl:apply-templates select="@*|node()"/>     </cvss:base_metrics> </xsl:template>  <xsl:template match="vuln:references">     <vuln:references>         <vuln:cve-id><xsl:value-of select="../vuln:cve-id"/></vuln:cve-id>         <xsl:apply-templates select="@*|node()"/>     </vuln:references> </xsl:template>  <xsl:template match="vuln:scanner">     <vuln:scanner>         <vuln:cve-id><xsl:value-of select="../vuln:cve-id"/></vuln:cve-id>         <xsl:apply-templates select="@*|node()"/>     </vuln:scanner> </xsl:template> 

note product element, "." required identify current node, in line

this required because of structure of original xml, different rest of child nodes.

so issue 1 still problem me

[end edit]

the plan once both sets of code working separately combine them can import both attributes , elements ms access.

very grateful assistance.

ok have found answer own question.

the nvd xml challenging translate elements , attributes nested @ different levels in original xml.

the code using import follows

<xsl:stylesheet version="1.0" xmlns:scap-core="http://scap.nist.gov/schema/scap-core/0.1" xmlns:cvss="http://scap.nist.gov/schema/cvss-v2/0.2" xmlns:vuln="http://scap.nist.gov/schema/vulnerability/0.4" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:patch="http://scap.nist.gov/schema/patch/0.1" xmlns="http://scap.nist.gov/schema/feed/vulnerability/2.0" xmlns:cpe-lang="http://cpe.mitre.org/language/2.0" xsi:schemalocation="http://scap.nist.gov/schema/patch/0.1 http://nvd.nist.gov/schema/patch_0.1.xsd http://scap.nist.gov/schema/feed/vulnerability/2.0 http://nvd.nist.gov/schema/nvd-cve-feed_2.0.xsd http://scap.nist.gov/schema/scap-core/0.1 http://nvd.nist.gov/schema/scap-core_0.1.xsd" xmlns:xsl="http://www.w3.org/1999/xsl/transform">     <xsl:output indent="yes"/>     <xsl:strip-space elements="*"/>   <!--     create copy of original xml    -->       <xsl:template match="@*|node()">         <xsl:copy>             <xsl:apply-templates select="node()"/>         </xsl:copy>     </xsl:template>   <!--     create "vulnerable-configuration-att" table        --> <!--     add "cve-id" "vulnerable-configuration" table   --> <!--     adding "id" atribute element                    --> <!--     adding "operator" atribute element              --> <!--     adding "negate" atribute element                -->       <xsl:template match="@*|vuln:vulnerable-configuration">         <vulnerable-configuration-att>             <vuln:cve-id> <xsl:value-of select="../vuln:cve-id"/> </vuln:cve-id>             <cve-sub-id> <xsl:value-of select="../../vuln:cve-id"/> </cve-sub-id>             <xsl:element name="config-id"> <xsl:value-of select="@id"/> </xsl:element>             <xsl:element name="operator"> <xsl:value-of select="//@operator"/> </xsl:element>             <xsl:element name="negate"> <xsl:value-of select="//@negate"/> </xsl:element>         </vulnerable-configuration-att>     </xsl:template>     <!--     create "cwe-att" table            --> <!--     add "cve-id" "cwe-att" table   --> <!--     adding "id" atribute element   -->      <xsl:template match="@*|vuln:cwe">         <cwe-att>             <xsl:apply-templates select="@*|node()"/>             <vuln:cve-id> <xsl:value-of select="../vuln:cve-id"/> </vuln:cve-id>             <vuln:cve-sub-id> <xsl:value-of select="../../vuln:cve-id"/> </vuln:cve-sub-id>             <xsl:element name="cwe-id"> <xsl:value-of select="@id"/> </xsl:element>         </cwe-att>     </xsl:template>      <!--     create "vuln:definition-att" table"              --> <!--     add "cve-id" "vuln:definition" table"         --> <!--     adding "system" , "href" atribute element   -->      <xsl:template match="@*|vuln:definition">         <definition-att>             <vuln:cve-id> <xsl:value-of select="../../vuln:cve-id"/> </vuln:cve-id>             <vuln:cve-sub-id> <xsl:value-of select="../../../vuln:cve-id"/> </vuln:cve-sub-id>             <xsl:element name="system"> <xsl:value-of select="@system"/> </xsl:element>             <xsl:element name="href"> <xsl:value-of select="@href"/> </xsl:element>         </definition-att>     </xsl:template>   <!--     add "cve-id" "base_metric" table"   -->      <xsl:template match="cvss:base_metrics">         <cvss:base_metrics>             <vuln:cve-id><xsl:value-of select="../../vuln:cve-id"/></vuln:cve-id>             <xsl:apply-templates select="node()"/>         </cvss:base_metrics>     </xsl:template>   <!--     add "cve-id" "vuln:references" table" attributes  --> <!--     adding "reference" able link "reference" table , "references" table   -->      <xsl:template match="vuln:references">         <vuln:references>             <cve-id> <xsl:value-of select="../vuln:cve-id"/> </cve-id>             <xsl:element name="xml_lang"> <xsl:value-of select="@xml:lang"/> </xsl:element>             <xsl:element name="reference_type"> <xsl:value-of select="@reference_type"/> </xsl:element>             <reference><xsl:value-of select="."/></reference>             <xsl:apply-templates select="node()"/>         </vuln:references>     </xsl:template>   <!--     create "eference-att" table"                          --> <!--     add "cve-id" "reference-att" table"                --> <!--     adding "xml:lang" ,  , "href" atribute element   --> <!--     adding "reference" able link "reference" table , "references" table   -->      <xsl:template match="@*|vuln:reference">         <reference-att>             <vuln:cve-id> <xsl:value-of select="../../vuln:cve-id"/> </vuln:cve-id>             <xsl:element name="xml_lang"> <xsl:value-of select="@xml:lang"/> </xsl:element>             <xsl:element name="href"> <xsl:value-of select="@href"/> </xsl:element>             <reference><xsl:value-of select="."/></reference>         </reference-att>     </xsl:template>   <!--     add "cve-id" "product" table"   -->      <xsl:template match="vuln:product">         <vuln:product>             <vuln:cve-id><xsl:value-of select="../../vuln:cve-id"/></vuln:cve-id>             <vuln:product><xsl:value-of select="."/></vuln:product>         </vuln:product>     </xsl:template>     </xsl:stylesheet> 

the challenge importing atributes @ different levels need select reference point "xsl:template match" command , can reference each part of original xml once, hence if want import atributes in nvd xml need use multiple xslt files , import different levels in stages ms access. below example of importing child table

<xsl:stylesheet version="1.0" xmlns:scap-core="http://scap.nist.gov/schema/scap-core/0.1" xmlns:cvss="http://scap.nist.gov/schema/cvss-v2/0.2" xmlns:vuln="http://scap.nist.gov/schema/vulnerability/0.4" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:patch="http://scap.nist.gov/schema/patch/0.1" xmlns="http://scap.nist.gov/schema/feed/vulnerability/2.0" xmlns:cpe-lang="http://cpe.mitre.org/language/2.0" xsi:schemalocation="http://scap.nist.gov/schema/patch/0.1 http://nvd.nist.gov/schema/patch_0.1.xsd http://scap.nist.gov/schema/feed/vulnerability/2.0 http://nvd.nist.gov/schema/nvd-cve-feed_2.0.xsd http://scap.nist.gov/schema/scap-core/0.1 http://nvd.nist.gov/schema/scap-core_0.1.xsd" xmlns:xsl="http://www.w3.org/1999/xsl/transform">     <xsl:output indent="yes"/>     <xsl:strip-space elements="*"/>   <!--     create copy of original xml    -->       <xsl:template match="@*|node()">         <xsl:copy>             <xsl:apply-templates select="node()"/>         </xsl:copy>     </xsl:template>  <!--     create "fact-ref-att" table                        --> <!--     add "cve-id" "fact-ref-att" table               --> <!--     adding "name" atribute element                  -->      <xsl:template match="@*|cpe-lang:fact-ref">             <fact-ref-att>                 <vuln:cve-id> <xsl:value-of select="../../../vuln:cve-id"/> </vuln:cve-id>                 <xsl:element name="fact-ref-name"> <xsl:value-of select="//@name"/> </xsl:element>             </fact-ref-att>     </xsl:template>  </xsl:stylesheet> 

by running second import access possible create separate table fact ref , have linked cve-id. once in access 2 tables can linked using cve-id. each set of attributes related children/parents want import need separate xslt file, if both children same or different parents, can included in same xslt file. problem occurs when try convert child nested in parent.


Comments