1

2 つのタグの値を連結する XML ドキュメントを変換しています。

  <xsl:variable name="label">
    <xsl:value-of select="label"/>
  </xsl:variable>
  <xsl:variable name="nr">
    <xsl:value-of select="nr"/>
  </xsl:variable>
  <xsl:variable name="label_nr">
    <xsl:value-of select="concat($label, ' ', $nr)"/>
  </xsl:variable>

これは

  <label>Article</label>
  <nr>1</nr>

しかし、私は次のものが欲しい

  <nr>First</nr>
  <label>article</label>

「最初の記事」ではなく、「最初の記事」を生成します。XSLT でタグの順序を区別する簡単な方法はありますか?

4

3 に答える 3

1

これを行うには、軸を使用できるはずです。

<xsl:variable name="label_nr">
    <xsl:choose>
        <xsl:when test="name(nr/following-sibling::node()[1]) = 'label'"><xsl:value-of select="concat($nr, ' ', $label)"/></xsl:when>
        <xsl:otherwise><xsl:value-of select="concat($label, ' ', $nr)"/></xsl:otherwise>
    </xsl:choose>
</xsl:variable>

nr/following-sibling::node()[1]ノードから次のノードを選択していnrます。軸following-sibling::が後続のすべてのノードをフェッチするため、[1] が必要なので、次のノードを取得する[1]だけです。name()次に、要素の名前を取得するために使用します。そこから何が起こっているのかが明確になることを願っています。

于 2013-07-23T11:17:39.017 に答える