2017-02-14 11 views
0

다음 EDIFabric 및 EDI 파일을 사용하여 XML로 변환 한 다음 XML이 있습니다.EDI XML XSLT를 사용한 XML 변환

<?xml version="1.0" encoding="UTF-8"?> 
<M_856 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="www.edifabric.com/x12"> 
    <S_N3> 
     <D_166_1>UNION SQUARE IND PK</D_166_1> 
     <D_166_2>909 KATIE COURT</D_166_2> 
    </S_N3> 
    <S_N4> 
     <D_19_1>Harrisburg</D_19_1> 
     <D_156_2>PA</D_156_2> 
     <D_116_3>17109</D_116_3> 
     <D_26_4>US</D_26_4> 
    </S_N4>   
    <S_SE> 
     <D_96_1>22</D_96_1> 
     <D_329_2>1845</D_329_2> 
    </S_SE> 
</M_856> 

내가 다음과 같이 모든 S_N4 노드를 추출하고자 다음 XSLT 변환이 무엇을

<City>Harrisburg</City> 
<State>PA</State> 
<PostalCode>17109</PostalCode> 
<Country>US</Country> 

필요합니까?

답변

0

아래의 루트 무엇이든에 루트 이름을 변경 할 것 :

<?xml version="1.0" encoding="UTF-16"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl s0" version="1.0" xmlns:s0="www.edifabric.com/x12"> 
    <xsl:output omit-xml-declaration="yes" method="xml" version="1.0" /> 
    <xsl:template match="/"> 
    <xsl:apply-templates select="/s0:M_856" /> 
    </xsl:template> 
    <xsl:template match="/s0:M_856"> 
    <Root> 
     <City> 
     <xsl:value-of select="s0:S_N4/s0:D_19_1/text()" /> 
     </City> 
     <State> 
     <xsl:value-of select="s0:S_N4/s0:D_156_2/text()" /> 
     </State> 
     <PostalCode> 
     <xsl:value-of select="s0:S_N4/s0:D_116_3/text()" /> 
     </PostalCode> 
     <Country> 
     <xsl:value-of select="s0:S_N4/s0:D_26_4/text()" /> 
     </Country> 
    </Root> 
    </xsl:template> 
</xsl:stylesheet> 
+0

을 당신이 첫번째 템플릿을 필요가 있다고 생각합니까 왜? –

+0

두 번째 템플리트를 적용하려면 :) 꼭 필요한 것은 아닙니다. –

+0

https://www.w3.org/TR/xslt/#built-in-rule –