我有一个简单的xslt脚本:
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/package">
<xsl:copy-of select="*"/>
</xsl:template>
</xsl:stylesheet>当应用于下面的示例时,
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<package
xmlns="http://www.idpf.org/2007/opf"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/"
version="3.0"
xml:lang="en"
unique-identifier="pub-identifier"
>
<metadata>
<dc:identifier id="pub-identifier">_idm462750791920</dc:identifier>
<meta id="meta-identifier" property="dcterms:identifier">_idm462750791920</meta>
</metadata>
</package>产生无意义的结果
<?xml version="1.0"?>
_idm462750791920
_idm462750791920请注意,我没有使用与dc名称空间相关的元素,其工作方式与预期不谋而合。例如,如果我使用:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<package
xmlns="http://www.idpf.org/2007/opf"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/"
version="3.0"
xml:lang="en"
unique-identifier="pub-identifier"
>
<metadata>
asdfasdfads
</metadata>
</package>因此,它似乎确实识别了"package“元素,并按照我的预期对其采取了行动。
我要怎么做才能让它工作呢?
发布于 2016-08-20 03:32:53
请注意,我没有使用与dc名称空间相关的元素,它的工作方式与预期不谋而合。
你在期待什么?这将产生以下输出:
<?xml version="1.0" encoding="utf-8"?>
asdfasdfads如果/package选择得当,这不是我对<xsl:copy-of select="*"/>的期望。
包,所以它看起来确实识别了“
”元素,并按照我的预期对其执行操作。
不,很抱歉它不是。你看到的是XSLT's built-in template rules的结果。
/package元素位于默认命名空间http://www.idpf.org/2007/opf中。您可以做的是将名称空间uri绑定到前缀,并在XPath中使用它(在match中)。
注意:您使用的前缀并不重要,只要uri是相同的即可。
例如。
XSLT 1.0
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:opf="http://www.idpf.org/2007/opf">
<xsl:template match="/opf:package">
<xsl:copy-of select="*"/>
</xsl:template>
</xsl:stylesheet>第一个输入示例的输出:
<metadata xmlns="http://www.idpf.org/2007/opf" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/">
<dc:identifier id="pub-identifier">_idm462750791920</dc:identifier>
<meta id="meta-identifier" property="dcterms:identifier">_idm462750791920</meta>
</metadata>第二个输入示例的输出:
<metadata xmlns="http://www.idpf.org/2007/opf" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/">
asdfasdfads
</metadata>如果其中任何一项与您期望的输出不同,请使用您期望/需要的确切输出更新您的问题。
https://stackoverflow.com/questions/39045196
复制相似问题