2013-11-14 72 views
2

首先,我對此非常感興趣,因此您的耐心感謝。xslt找到具有特定字符串的節點並顯示兄弟值

這裏是樹的一部分:

<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> 

鑑於有對「動態的元數據」的幾個節點,如何將我寫的XSLT來:

  1. 找到與特定節點'category'的字符串,然後
  2. 循環訪問name = category的兄弟節點以檢索並顯示「value」節點中包含的文本?

理想情況下,我試圖創建一個具有輸出:
分類:值(字符串),值(字符串),值(字符串)

感謝這麼多的幫助!

回答

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> 
+0

非常有幫助!非常感謝你的幫助。 – FutureMuse

+0

@FutureMuse接受? – smj

+0

是的,它讓我回到了我的答案,並得到了我期待的結果。 Thx再次 – FutureMuse

相關問題