我使用 php DOMDocument 进行 XSLT 将一个 XML 转换为另一个 XML,我需要在生成的文档标签中使用额外的标签 - mytag 像
<mytag:full-text>...</mytag:full-text>
为了定义这个标签,我尝试了这样的构造:
<xsl:namespace-alias stylesheet-prefix="mytag" result-prefix="mytag"/>
所以我收到一个错误
Warning: DOMDocument::load() [domdocument.load]: Namespace prefix mytag on full-text is not defined
我做错了什么?
下面是如何执行此操作的完整代码示例:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:mytag="my:tag" exclude-result-prefixes="mytag">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="b">
<b>
<mytag:full-text>Some full-text here</mytag:full-text>
</b>
</xsl:template>
</xsl:stylesheet>
将此转换应用于以下 XML 文档时:
<a><b/></a>
生成所需的正确结果(在 b
下添加的新元素):
<a>
<b>
<mytag:full-text xmlns:mytag="my:tag">Some full-text here</mytag:full-text>
</b>
</a>
尝试将 xmlns:mytag="some_namespace" 添加到 XSLT 的根目录中,以便得到类似这样的内容
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:mytag="some_namespace">