0

私がこれを持っている場合、私は何ができますか:

<e1>t1<e2>t2</e2></e1>

XSLTで翻訳したい:

<c1>t1<c2>t2</c2></c1>

私は試してみました:

<xsl:template match="e1">
  <c1>
     <xsl:value-of select=".">
        <xsl:apply-templates/>
     </xsl:value-of>
  </c1>
</xsl:template>
<xsl:template match="e2">
  <c2>
     <xsl:value-of select="."/>
  </c2>
</xsl:template>

しかし、値が空でなければならないので、私は間違いを受け取ります。

4

1 に答える 1

2

xsl:value-of間違いなく、空でなければなりません。しかし、その中には何も必要ありません。e1以下のスタイルシートは恒等変換ですが、2 つの例外があります。つまり、との要素名を置き換えていますe2

e1これは、任意の XML ドキュメントを置き換え、e2残りのすべてをそのままにしておくという意味で、非常に汎用的です。

スタイルシート

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

   <xsl:output method="xml" indent="yes"/>

   <xsl:template match="@*|node()">
      <xsl:copy>
         <xsl:apply-templates select="@*|node()"/>
      </xsl:copy>
   </xsl:template>

   <xsl:template match="e1">
      <c1>
         <xsl:apply-templates select="@*|node()"/>
      </c1>
   </xsl:template>

   <xsl:template match="e2">
      <c2>
         <xsl:apply-templates select="@*|node()"/>
      </c2>
   </xsl:template>

</xsl:stylesheet>

出力

<?xml version="1.0" encoding="UTF-8"?>
<c1>t1<c2>t2</c2></c1>
于 2014-02-05T08:13:02.607 に答える