如何完成我的 xsl 文件以将我的 XML 转换为另一个 XML
How do I complete my xsl file to have my XML transform in to an other XML
我有一个 XML 文件(我在这里提供),我想将这个 XML 文件转换为另一个 XML 文件(你可以看到我想要的结果在这里的第二个代码中)使用 .XSL 文件我想完成这个
原XML
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="Test.xsl"?>
<requests>
<request requestId="req0001" type="standard">
<shipmentAdress>
<line1>33, del Plebiscito </line1>
<line2>60100 Ancona</line2>
<line3>Italy</line3>
</shipmentAdress>
<items>
<item productId="L 220.kaalie" quantity="15" />
</items>
<note>dont come here realy big dog.</note>
</request>
<request requestId="req0003" type="express">
<shipmentAdress>
<line1>Ignazio 52</line1>
<line2>00186 ROMA</line2>
<line3>Lazio</line3>
<line4>Italy</line4>
</shipmentAdress>
<items>
<item productId="frindutyloiuunt" quantity="100" />
<item productId="L 149.kilopoz" quantity="50" />
<item productId="L 160.rtyniue" quantity="150" />
</items>
</request>
<request requestId="req0002" type="express">
<shipmentAdress>
<line1>Ignazio 54</line1>
<line2>00186 ROMA</line2>
<line3>Lazio</line3>
<line4>Italy</line4>
</shipmentAdress>
<items>
<item productId="fulky245" quantity="150" />
<item productId="kilmoniy23" quantity="500" />
<item productId="Frienudyt34" quantity="10" />
<item productId="DERULIA45" quantity="200" />
</items>
<note>This is <b>hard to find</b> !</note>
</request>
</requests>
XML 它需要如何照顾我的转变
<?xml version="1.0" encoding="utf-8"?>
<expressOrders>
<request city="00186 ROMA">
<req>req0003</req>
<items>
<item productId="frindutyloiuunt" quantity="100" />
<item productId="L 149.kilopoz" quantity="50" />
<item productId="L 160.rtyniue" quantity="150" />
</items>
</request>
<request city="00186 ROMA">
<req>req0002</req>
<items>
<item productId="fulky245" quantity="150" />
<item productId="kilmoniy23" quantity="500" />
<item productId="Frienudyt34" quantity="10" />
<item productId="DERULIA45" quantity="200" />
</items>
</request>
</expressOrders>
我的 xsl 文件
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="requests">
<expressOrders>
</expressOrders>
</xsl:template>
<xsl:template match="request">
</xsl:template>
</xsl:stylesheet>
现在我看到需要selectexpress类型的请求,设置line2"00186 ROMA"作为city的属性,属性requestId作为request的子元素,复制request的request元素我的项目元素。但是走了几步就卡住了。
我怎样才能做到这一点。
以下 XSLT
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="requests">
<expressOrders>
<xsl:apply-templates select="request[@type='express']"/>
</expressOrders>
</xsl:template>
<xsl:template match="request">
<request>
<xsl:attribute name="city">
<xsl:value-of select="shipmentAdress/line2"/>
</xsl:attribute>
<req><xsl:value-of select="@requestId"/></req>
<xsl:copy-of select="items"/>
</request>
</xsl:template>
</xsl:stylesheet>
当应用于您的输入时 XML 产生输出
<?xml version="1.0" encoding="utf-8"?>
<expressOrders>
<request city="00186 ROMA">
<req>req0003</req>
<items>
<item productId="frindutyloiuunt" quantity="100"/>
<item productId="L 149.kilopoz" quantity="50"/>
<item productId="L 160.rtyniue" quantity="150"/>
</items>
</request>
<request city="00186 ROMA">
<req>req0002</req>
<items>
<item productId="fulky245" quantity="150"/>
<item productId="kilmoniy23" quantity="500"/>
<item productId="Frienudyt34" quantity="10"/>
<item productId="DERULIA45" quantity="200"/>
</items>
</request>
</expressOrders>
在模板匹配 requests
中,模板仅应用于类型为 express
的 request
个元素:<xsl:apply-templates select="request[@type='express']"/>
模板匹配 request
将属性 city
设置为 request
元素:
<request>
<xsl:attribute name="city">
<xsl:value-of select="shipmentAdress/line2"/>
</xsl:attribute>
将 requestId
的值设置为 req
节点中的值:
<req><xsl:value-of select="@requestId"/></req>
并将items
节点(包括所有item
子节点)复制到请求中:
<xsl:copy-of select="items"/>
作为 XPath 语法和位置路径的有用资源,您可以查看 http://www.w3.org/TR/1999/REC-xpath-19991116/#path-abbrev
我有一个 XML 文件(我在这里提供),我想将这个 XML 文件转换为另一个 XML 文件(你可以看到我想要的结果在这里的第二个代码中)使用 .XSL 文件我想完成这个
原XML
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="Test.xsl"?>
<requests>
<request requestId="req0001" type="standard">
<shipmentAdress>
<line1>33, del Plebiscito </line1>
<line2>60100 Ancona</line2>
<line3>Italy</line3>
</shipmentAdress>
<items>
<item productId="L 220.kaalie" quantity="15" />
</items>
<note>dont come here realy big dog.</note>
</request>
<request requestId="req0003" type="express">
<shipmentAdress>
<line1>Ignazio 52</line1>
<line2>00186 ROMA</line2>
<line3>Lazio</line3>
<line4>Italy</line4>
</shipmentAdress>
<items>
<item productId="frindutyloiuunt" quantity="100" />
<item productId="L 149.kilopoz" quantity="50" />
<item productId="L 160.rtyniue" quantity="150" />
</items>
</request>
<request requestId="req0002" type="express">
<shipmentAdress>
<line1>Ignazio 54</line1>
<line2>00186 ROMA</line2>
<line3>Lazio</line3>
<line4>Italy</line4>
</shipmentAdress>
<items>
<item productId="fulky245" quantity="150" />
<item productId="kilmoniy23" quantity="500" />
<item productId="Frienudyt34" quantity="10" />
<item productId="DERULIA45" quantity="200" />
</items>
<note>This is <b>hard to find</b> !</note>
</request>
</requests>
XML 它需要如何照顾我的转变
<?xml version="1.0" encoding="utf-8"?>
<expressOrders>
<request city="00186 ROMA">
<req>req0003</req>
<items>
<item productId="frindutyloiuunt" quantity="100" />
<item productId="L 149.kilopoz" quantity="50" />
<item productId="L 160.rtyniue" quantity="150" />
</items>
</request>
<request city="00186 ROMA">
<req>req0002</req>
<items>
<item productId="fulky245" quantity="150" />
<item productId="kilmoniy23" quantity="500" />
<item productId="Frienudyt34" quantity="10" />
<item productId="DERULIA45" quantity="200" />
</items>
</request>
</expressOrders>
我的 xsl 文件
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="requests">
<expressOrders>
</expressOrders>
</xsl:template>
<xsl:template match="request">
</xsl:template>
</xsl:stylesheet>
现在我看到需要selectexpress类型的请求,设置line2"00186 ROMA"作为city的属性,属性requestId作为request的子元素,复制request的request元素我的项目元素。但是走了几步就卡住了。
我怎样才能做到这一点。
以下 XSLT
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="requests">
<expressOrders>
<xsl:apply-templates select="request[@type='express']"/>
</expressOrders>
</xsl:template>
<xsl:template match="request">
<request>
<xsl:attribute name="city">
<xsl:value-of select="shipmentAdress/line2"/>
</xsl:attribute>
<req><xsl:value-of select="@requestId"/></req>
<xsl:copy-of select="items"/>
</request>
</xsl:template>
</xsl:stylesheet>
当应用于您的输入时 XML 产生输出
<?xml version="1.0" encoding="utf-8"?>
<expressOrders>
<request city="00186 ROMA">
<req>req0003</req>
<items>
<item productId="frindutyloiuunt" quantity="100"/>
<item productId="L 149.kilopoz" quantity="50"/>
<item productId="L 160.rtyniue" quantity="150"/>
</items>
</request>
<request city="00186 ROMA">
<req>req0002</req>
<items>
<item productId="fulky245" quantity="150"/>
<item productId="kilmoniy23" quantity="500"/>
<item productId="Frienudyt34" quantity="10"/>
<item productId="DERULIA45" quantity="200"/>
</items>
</request>
</expressOrders>
在模板匹配 requests
中,模板仅应用于类型为 express
的 request
个元素:<xsl:apply-templates select="request[@type='express']"/>
模板匹配 request
将属性 city
设置为 request
元素:
<request>
<xsl:attribute name="city">
<xsl:value-of select="shipmentAdress/line2"/>
</xsl:attribute>
将 requestId
的值设置为 req
节点中的值:
<req><xsl:value-of select="@requestId"/></req>
并将items
节点(包括所有item
子节点)复制到请求中:
<xsl:copy-of select="items"/>
作为 XPath 语法和位置路径的有用资源,您可以查看 http://www.w3.org/TR/1999/REC-xpath-19991116/#path-abbrev