我使用php DOMDocument for 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
我做错了什么?
答案 0 :(得分:2)
以下是完整的代码示例:
<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>
答案 1 :(得分:1)
尝试将xmlns:mytag =“some_namespace”添加到XSLT的根目录,以便得到类似的内容
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:mytag="some_namespace">