1

あるXMLを別のXMLに変換するXSLTにphpDOMDocumentを使用しており、追加のタグを使用する必要があります。

<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

XSLT のルートに xmlns:mytag="some_namespace" を追加してみてください。

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