2015-01-09 3 views
0

유럽 형식의 소수점 노드를 미국식으로 변환해야합니다. 도와주세요. XML은 내가 XML에서 통해 반복 경우에만 수량 노드를 포맷해야 XML에서 노드를 유럽에서 미국으로 변환 십진수 형성 ​​

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<Order> 
    <Header> 
    <OrderNumber>PO000001</OrderNumber> 
    <OrderDate>20150108</OrderDate> 
    <BuyerCode>00132</BuyerCode> 
    <SupplierCode>V00048</SupplierCode> 
    <ShipTo> 
     <shipCode>00132</shipCode> 
     <address1>Askent Sok. No:3/A Kat:1 </address1> 
     <address2>Kosifler İş Merkezi</address2> 
     <shipCity>İÇERENKÖY/ATAŞEHİR/İSTANBUL</shipCity> 
     <shipPostCode>TR-34752</shipPostCode> 
     <shipCountry> 
     <shipCountryCode /> 
     <shipCountryName /> 
     </shipCountry> 
    </ShipTo> 
    <OrderText> 
     <TextHeader /> 
    </OrderText> 
    <Lines> 
     <LineNumber>10000</LineNumber> 
     <ItemNumber>AICM00320-WU9E1</ItemNumber> 
     <Quantity>1,1</Quantity> 
     <Uom>PC</Uom> 
     <DeliveryDate>20150122</DeliveryDate> 
     <LineText> 
     <TextLines /> 
     </LineText> 
    </Lines> 
    <Lines> 
     <LineNumber>20000</LineNumber> 
     <ItemNumber>AICM00400-WU9E1</ItemNumber> 
     <Quantity>5.000</Quantity> 
     <Uom>PC</Uom> 
     <DeliveryDate>20150122</DeliveryDate> 
     <LineText> 
     <TextLines /> 
     </LineText> 
    </Lines> 
    <Lines> 
     <LineNumber>30000</LineNumber> 
     <ItemNumber>AICM00400-WU9E1</ItemNumber> 
     <Quantity>10</Quantity> 
     <Uom>PC</Uom> 
     <DeliveryDate>20150122</DeliveryDate> 
     <LineText> 
     <TextLines /> 
     </LineText> 
    </Lines> 
    </Header> 
</Order> 

아래처럼 보인다. xslt를 사용하여 모든 십진 노드를 미국에서 유럽 형식으로 변환했습니다. 아래처럼 보입니다.

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:decimal-format name="eu" decimal-separator=',' grouping-separator='.' /> 

<!-- identity transform --> 
<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="*[number()=number()]"> 
    <xsl:copy> 
     <xsl:value-of select="format-number(., '#.##0,##########', 'eu')" /> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 

모든 수량 노드 (수량 노드 만)를 변환하는 유사한 XSLT가 필요합니다. 제발 도와주세요. 감사합니다

답변

0

교체

<xsl:template match="Quantity"> 
    <xsl:copy> 
     <xsl:value-of select="format-number(translate(., ',.', '.'), '#,##0.##########')" /> 
    </xsl:copy> 
</xsl:template> 
+0

<xsl:template match="*[number()=number()]"> <xsl:copy> <xsl:value-of select="format-number(., '#.##0,##########', 'eu')" /> </xsl:copy> </xsl:template> 

당신이 정말로 '우리'을해야합니까? 기본값 만 다시 선언합니다. 그렇지 않습니까? –

+0

당신이 맞습니다. 필자는 기존 코드를 기계적으로 변형 시켰기 때문에 변경을 구현하는 데 필요한 변경 작업을 수행했습니다. 필요한 형식은 세 번째 인수없이'format-number'를 사용하기에 충분합니다. 나는 그 변화를 만들기 위해 편집 할 것이다. –

관련 문제