2011-12-14 66 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> 

如何写一个选择=“”匹配所有CUST元素值的,非重复(如果有最大于1个请求)?

+0

您的最终标签应 gef 2011-12-14 00:50:23

回答

0

这是你在追求什么?

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

如何撰写一个选择=“”匹配所有CUST元素值, 非重复(如果有大部分是大于1个请求)?

下面是一个完整,短而简单(无xsl:for-each和无长和不可读线)Muenchian grouping溶液

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

当这个变换所提供的XML文档施加(具有经过多次更正后形成良好):

<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