2011-12-14 8 views
1

XML:XSLTスタイルシート?書き方がわからない?

<tickets> 
    <request day="tue"> 
    <ticket> 
     <type>Tech Support</type> 
     <cust>9045</cust> 
     <status>pending</status> 
    <ticket> 
    <ticket> 
     <type>Account Support</type> 
     <cust>3344</cust> 
     <status>resolved</status> 
    <ticket> 
    </request> 
    <request day="wed"> 
    <ticket> 
     <type>Tech Support</type> 
     <cust>9944</cust> 
     <status>new</status> 
    <ticket> 
    <ticket> 
     <type>Billing</type> 
     <cust>3344</cust> 
     <status>pending</status> 
    <ticket> 
    </request> 
</tickets> 

(ほとんどが1つの要求よりも存在する場合)私はCUST要素値のすべてを一致させる「」=選択を書くにはどうすればよい、非繰り返し?

+0

あなたのエンドタグが gef

+0

、ご希望の出力を表示してくださいする必要があります。 –

+1

グループ化の質問(私が正しく理解している場合)のように聞こえます。この場合、XSLT 2.0のソリューションはXSLT 1.0よりはるかに簡単です。使用しているバージョンを伝える必要があります。 –

答えて

0

これはあなたの後ですか?私は(ほとんどが1つの要求よりも存在する場合)、カスト要素値のすべてに一致 が非反復するために「」=選択を書くにはどうすればよい

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="text" encoding="UTF-8" indent="yes"/> 
    <xsl:key name="cust" match="/tickets/request/ticket/cust/text()" use="."/> 
    <xsl:template match="/"> 
     <xsl:for-each select="/tickets/request/ticket/cust/text()[generate-id()=generate-id(key('cust',.)[1])]"> 
      <xsl:value-of select="."/> 
      <xsl:text>&#10;</xsl:text> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 
1

?この変換を有する(提供されるXML文書に印加されたとき

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text"/> 

<xsl:key name="kCustByVal" match="cust" use="."/> 

<xsl:template match= 
    "cust 
    [generate-id() 
    = 
     generate-id(key('kCustByVal', .)[1]) 
    ] 
    "> 
    <xsl:value-of select="."/><xsl:text> </xsl:text> 
</xsl:template> 

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

:ここ

は、完全ショートとシンプル(NO xsl:for-eachなし長い読み取り不能線)Muenchian grouping溶液あります数多くの訂正を経て整形された):

<tickets> 
    <request day="tue"> 
     <ticket> 
      <type>Tech Support</type> 
      <cust>9045</cust> 
      <status>pending</status> 
     </ticket> 
     <ticket> 
      <type>Account Support</type> 
      <cust>3344</cust> 
      <status>resolved</status> 
     </ticket> 
    </request> 
    <request day="wed"> 
     <ticket> 
      <type>Tech Support</type> 
      <cust>9944</cust> 
      <status>new</status> 
     </ticket> 
     <ticket> 
      <type>Billing</type> 
      <cust>3344</cust> 
      <status>pending</status> 
     </ticket> 
    </request> 
</tickets> 

を望んでいた、正しい結果がが生成されます

9045 3344 9944 
関連する問題