如何在xslt 1.0中粘贴来自我的xml源代码的描述

问题描述:

我有问题在这种情况下如何粘合两个或更多描述。 源代码是在这里:如何在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

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>