簡體   English   中英

通過分組節點XSLT獲得屬性值

[英]get attribute values by grouping nodes XSLT

我有一個帶有多個節點slide的大型xml文件,以下是我的大型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>

在這里,我只需要對具有屬性ReferencesCompanyslide節點進行分組,並獲取這些節點的所有add_info屬性values 。例如,預期輸出:

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>

但這給了我整個文檔中add_info屬性的all文本值,例如:

e a b c d

但是我只需要abc的輸出,如何更改上面的xslt代碼以實現這一點。.任何建議..我被困在這里:(

您說的是“組”,但是分組特定於要創建具有相同屬性的多個組。

要僅選擇具有特定屬性的一組構造,只需在單個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並使用不帶//的地址到達所有幻燈片的父級,然后將其作為子級進行尋址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM