2012-05-12 5 views
-2

어떻게 변환합니까? 원본 XML을 변형하고 새 XML을 저장하려고합니다.XSLT를 사용하여이 XML 파일을 변환하는 방법

소스 XML :

<obs obs-time-local="20120424T0900" obs-time-utc="20120423T2300" time-zone="EST" 
site="86071" station="Melbourne"> 
<d t="tx">19.2</d> 
<d t="tn">7.9</d> 
<d t="tg">4.6</d> 
<d t="twd">0.6</d> 
<d t="r">4.8</d> 
<d t="ev">2.0</d> 
<d t="wr">82</d> 
<d t="t10">13.0</d> 
<d t="t20">16.0</d> 
</obs> 

대상 XML하십시오 templaty 솔루션 시도에 대한

<marker name="Melbourne"> 
<maxTemperature>19.2</maxTemperature> 
<minTemperature>7.9</minTemperature> 
<rainTo9am>4.8</rainTo9am> 
<windRun>82</windRun> 
</marker> 

답변

1

:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" indent="yes"/> 

<xsl:template match="obs"> 
    <marker name="{@station}"> 
    <maxTemperature><xsl:value-of select="d[@t='tx']" /></maxTemperature> 
    <minTemperature><xsl:value-of select="d[@t='tn']" /></minTemperature> 
    <rainTo9am><xsl:value-of select="d[@t='r']" /></rainTo9am> 
    <windRun><xsl:value-of select="d[@t='wr']" /></windRun> 
    </marker> 
</xsl:template> 

</xsl:stylesheet>  
:
<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" indent="yes"/> 

<xsl:template match="obs"> 
    <marker name="{@station}"> 
    <xsl:apply-templates /> 
    </marker> 

</xsl:template> 

<xsl:template match="*" /> 

<xsl:template match="d[@t='tx']"> 
    <maxTemperature><xsl:value-of select="." /></maxTemperature> 
</xsl:template> 

<xsl:template match="d[@t='tn']"> 
    <minTemperature><xsl:value-of select="." /></minTemperature> 
</xsl:template> 

<xsl:template match="d[@t='r']"> 
    <rainTo9am><xsl:value-of select="." /></rainTo9am> 
</xsl:template> 

<xsl:template match="d[@t='wr']"> 
    <windRun><xsl:value-of select="." /></windRun> 
</xsl:template> 

</xsl:stylesheet> 

또는 작은 더 WYSIWYG 솔루션 시도에 대한

관련 문제