2017-10-15 101 views
0

我有問題在這種情況下如何粘合兩個或更多描述。 源代碼是在這裏:如何在xslt 1.0中粘貼來自我的xml源代碼的描述

<?xml version="1.0" encoding="utf-8" ?> 
    <Document> 
    <Number>739</Number> 
    <Date>2017-05-31</Date> 
    <Amount>204.46</Amount> 
    <FormOfPayment>2</FormOfPayment> 
    <Customer> 
     <Id> 10000</Id> 
     <Name>Auto Car Parts</Name> 
    </Customer> 
    <DocumentItems> 
     <Item> 
     <Amount>36.59</Amount> 
     <Date>2017-05-31</Date> 
     <SourceDoc> 
      <Number>1571/05/2017/ZO</Number> 
      <Date>2017-05-26</Date> 
     </SourceDoc> 
     </Item> 
     <Item> 
     <Amount>167.87</Amount> 
     <Date>2017-05-31</Date> 
     <SourceDoc> 
      <Number>0491/05/2017/ZO</Number> 
      <Date>2017-05-12</Date> 
     </SourceDoc> 
     </Item> 
    </DocumentItems> 
    </Document> 

我`噸找到在XSLT 1.0一些功能,我可以從粘合部文獻/ DocumetItems /項目/ SourceDoc /數字節點到一個變量。源代碼我應該得到的是在這個例子中是這樣的:

 <DocumentNumber>739</DocumentNumber> 
    <DocumentDate>2017-05-31</DocumentDate> 
    <Description>1571/05/2017/ZO, 0491/05/2017/ZO</Description> 

請幫我GET說明這個樣子。也許我可以使用for-each,但是如何做到這一點?

+0

那麼你的的XPath闡明瞭你的元素,因此簡單地使用路徑作爲''你換each'和輸出的select'屬性如果test =「position()!= last()」>,或者在前面加上' 1「>,'有你的逗號分隔符。 –

+0

它如何看起來像? – jeffers

回答

0

http://xsltfiddle.liberty-development.net/948Fn58爲闡明樣式表,它使用

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

    <xsl:output indent="yes"/> 

    <xsl:template match="/*"> 
     <xsl:copy> 
      <xsl:apply-templates select="Number | Date"/> 
      <Description> 
       <xsl:apply-templates select="DocumentItems/Item/SourceDoc/Number"/> 
      </Description> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="Number"> 
     <DocumentNumber> 
      <xsl:apply-templates/> 
     </DocumentNumber> 
    </xsl:template> 

    <xsl:template match="Date"> 
     <DocumentDate> 
      <xsl:apply-templates/> 
     </DocumentDate> 
    </xsl:template> 

    <xsl:template match="SourceDoc/Number"> 
     <xsl:if test="position() > 1">, </xsl:if> 
     <xsl:apply-templates/> 
    </xsl:template> 

</xsl:stylesheet>