2

まず、私はこれにひどく慣れていないので、あなたの忍耐に感謝します。

ツリーの一部を次に示します。

<root>
<dynamic-metadata>
    <name>alternative-title</name>
</dynamic-metadata>    
<dynamic-metadata>
    <name>category</name>
    <value>General</value>
    <value>Academic</value>
    <value>Business</value>
</dynamic-metadata>
<dynamic-metadata>
    <name>primary-nav</name>
    <value>Top bar</value>
</dynamic-metadata>
</root>

'dynamic-metadata' 用のノードがいくつかある場合、xslt を次のように書き込むにはどうすればよいでしょうか。

  1. 'category' の文字列で特定のノードを見つけ、次に
  2. name=category の兄弟をループして、「値」ノードに含まれるテキストを取得して表示しますか?

理想的には、次のような出力を作成しようとしています:
カテゴリ: 値(文字列)、値(文字列)、値(文字列)

助けてくれてどうもありがとう!

4

1 に答える 1

0

以下のdynamic-metadata[name='category']テンプレートは、調整を加えて、必要なことを実行する必要があります (使用している実際の XSLT についての詳細は提供されていません): (ところで、XML を修正する必要がありました。整形式ではありませんでした)

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

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

<xsl:template match="dynamic-metadata[name='category']">
    <output>Categories:<xsl:for-each select="value">
            <xsl:choose>
                <xsl:when test="position() != last()">
                    <xsl:text> </xsl:text>
                    <xsl:value-of select="."/>
                    <xsl:text>,</xsl:text>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:text> </xsl:text>
                    <xsl:value-of select="."/>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:for-each>
    </output>
</xsl:template>

<xsl:template match="text()"/>

</xsl:stylesheet>
于 2013-11-14T20:02:10.867 に答える