在使用XSLT处理RDF文档时,忽略该文档中的多个XML头
我有一个RDF文档,其中包含多个RDF记录(总共约30000条记录)。文件创建者可能错误地在每条记录之前添加了XML头。看起来是这样的:在使用XSLT处理RDF文档时,忽略该文档中的多个XML头,xml,xslt,rdf,Xml,Xslt,Rdf,我有一个RDF文档,其中包含多个RDF记录(总共约30000条记录)。文件创建者可能错误地在每条记录之前添加了XML头。看起来是这样的: <?xml version="1.0" ?> <rdf:RDF>...</rdf:RDF> <?xml version="1.0" ?> <rdf:RDF>...</rdf:RDF> <?xml version="1.0" ?> <rdf:RDF>...</r
<?xml version="1.0" ?>
<rdf:RDF>...</rdf:RDF>
<?xml version="1.0" ?>
<rdf:RDF>...</rdf:RDF>
<?xml version="1.0" ?>
<rdf:RDF>...</rdf:RDF>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:oai="http://www.openarchives.org/OAI/2.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rss="http://my.netscape.com/rdf/simple/0.9/"
xmlns="http://ands.org.au/standards/rif-cs/registryObjects"
exclude-result-prefixes="xs xsi xsl oai rdf rss">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<OAI-PMH
xmlns="http://www.openarchives.org/OAI/2.0/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
<xsl:template match="/">
<xsl:apply-templates select="rdf:RDF/rss:Researcher" />
</xsl:template>
<xsl:template match="rdf:RDF/rss:Researcher">
<oai:Researcher>
<xsl:value-of select="rss:title" />
</oai:Researcher>
</xsl:template>
</OAI-PMH>
</xsl:stylesheet>
我的测试人行横道如下所示:
<?xml version="1.0" ?>
<rdf:RDF>...</rdf:RDF>
<?xml version="1.0" ?>
<rdf:RDF>...</rdf:RDF>
<?xml version="1.0" ?>
<rdf:RDF>...</rdf:RDF>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:oai="http://www.openarchives.org/OAI/2.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rss="http://my.netscape.com/rdf/simple/0.9/"
xmlns="http://ands.org.au/standards/rif-cs/registryObjects"
exclude-result-prefixes="xs xsi xsl oai rdf rss">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<OAI-PMH
xmlns="http://www.openarchives.org/OAI/2.0/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
<xsl:template match="/">
<xsl:apply-templates select="rdf:RDF/rss:Researcher" />
</xsl:template>
<xsl:template match="rdf:RDF/rss:Researcher">
<oai:Researcher>
<xsl:value-of select="rss:title" />
</oai:Researcher>
</xsl:template>
</OAI-PMH>
</xsl:stylesheet>
是否有可能忽略这些标题?我使用xsltproc来应用人行横道。XSLT处理器对格式良好的XML非常坚决,而您的原始版本则不然。尝试使用通用脚本(Java、PHP、Python)打开文本文件并删除重复的标题。当然,从文本编辑器中删除
XMLProlog
会更简单。然后可以应用xslt
。顺便说一句,不确定您的用例是需要自动还是只需要一次,并且很乐意通过您选择的文本编辑器进行编辑。另外值得注意的是,即使删除重复的标题,您的文件仍然不是合法的XML,因为它仍然有多个根元素。是的,我最终创建了一个Java程序,将rdf拆分为多个xml