2017-04-14 80 views
0

我是新手編寫XSL.I熟悉10年前使用DOM解析器處理XML,但技術發生了變化。我想我仍然可以用Java DOM解析器完成這個工作,但是這對系統來說會是開銷。xml轉換爲xml轉換用於重複標記

我有一個以下格式的源XML。標籤「值」發生變化。我需要將其轉換爲第二個xml格式。

XML來源:

<Part> 
    <PartNumber>XYZ</PartNumber> 
    <ProductLines> 
     <Value>P58</Value> 
     <Value>P84</Value> 
     <Value>P88</Value> 
     <Value>P99</Value> 
    </ProductLines> 
    </Part> 

XML目標要

<Part> 
    <PartNumber>XYZ</PartNumber> 
    <ProductLines>P58,P84,P88,P99</ProductLines> 
    </Part> 

我想下面XSL,不工作:從XML大師們需要諮詢。

<?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     exclude-result-prefixes="xs" 
     version="1.0"> 
     <xsl:output method="xml"/> 
    <xsl:template match="node()|@*"> 
     <xsl:copy> 
      <xsl:apply-templates select="node()|@*"></xsl:apply-templates> 
     </xsl:copy> 
    </xsl:template> 
     <xsl:template match="ProductLines"> 
      <xsl:for-each select="Value"> 
       <xsl:value-of select="."></xsl:value-of> 
      </xsl:for-each> 
     </xsl:template> 
     <xsl:template match="ProductLines/node()"/> 
    </xsl:stylesheet> 
+1

什麼是 '不工作'?你能詳細說明具體問題嗎?無論如何,這通常有助於讓你更接近解決方案。 – jediz

回答

0

你可以使用這樣的事情來串聯值:

<xsl:variable name="concatenated_value"> 
    <xsl:for-each select="Value"> 
     <xsl:value-of select="."/> 
     <xsl:if test="position() != last()"> 
      <xsl:value-of select="','"/> 
     </xsl:if> 
    </xsl:for-each> 
</xsl:variable> 
+0

是的,這是完美的。 –