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:
i can not import attributes elements
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
Post a Comment