1

我使用 php DOMDocument 进行 XSLT 将一个 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

我在做什么错?

4

2 回答 2

4

这是一个完整的代码示例如何执行此操作

<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>
于 2012-04-11T12:57:28.533 回答
1

尝试将 xmlns:mytag="some_namespace" 添加到 XSLT 的根目录,这样您就可以得到类似的东西

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:mytag="some_namespace">
于 2012-04-11T12:05:44.823 回答