0

いくつかのノードを含む大きな xml ファイルがslideあり、以下は大きな xml の一部です。

<slide add_info="e" name="slide31.xml" nav_lvl_1="Contact" nav_lvl_2="Company" >
    --------something----------
</slide>
<slide add_info="a" name="slide32.xml" nav_lvl_1="References" nav_lvl_2="Company">
    -----something----
</slide>
<slide add_info="b" name="slide33.xml" nav_lvl_1="References" nav_lvl_2="Company" >
    ------something--------
</slide>
<slide add_info="c" name="slide34.xml" nav_lvl_1="References" nav_lvl_2="Company" >
    --------something----------
</slide>
<slide add_info="d" name="slide34.xml" nav_lvl_1="Contact" nav_lvl_2="Company" >
    --------something----------
</slide>

ここでは、slide属性を持つノードのみをグループ化し、それらのノードのすべての属性Referencesを取得する必要があります。たとえば、予想される出力:Companyadd_infovalues

a b c

現在私はやっています:

<xsl:choose>
    <xsl:when test="@nav_lvl_1='References'">
        <xsl:if test="@nav_lvl_2='Company'">
        <xsl:for-each select="//@add_info">
            <xsl:value-of select="."/>
        </xsl:for-each>
        </xsl:if>
    </xsl:when>
 </xsl:choose>

しかし、これにより、ドキュメント全体allの属性のテキスト値がadd_info得られます。たとえば、次のようになります。

e a b c d

しかし、出力が必要なのはa b c 、上記のコードを変更してそれを達成するにはどうすればよいかxslt..任意の提案..私はここで立ち往生しています:(

4

1 に答える 1

1

「グループ」と言いますが、グループ化は、同じプロパティを持つ複数のグループを作成したい場合に特有のものです。

特定のプロパティを持つコンストラクトのセットを 1 つだけ選択するには、単純にそれらを 1 つの XPath アドレスでアドレス指定します。

<xsl:for-each select="//slide[@nav_lvl_1='References' and @nav_lvl_2='Company'">
   <xsl:value-of select="@add_info"/>
</xsl:for-each>

//slide...すべてのスライドの親にアクセスせずにアドレスを使用することをあきらめて使用//し、スライドを子としてアドレス指定します。

于 2013-07-10T22:02:44.063 に答える