即使标记具有相同的名称,如何使用xslt将地址拉到输出中?
我正在尝试使用xslt将导入文件中接收到的所有地址拉到输出文件中。 我确实使用插入xslt中地址标记之间的代码完成了第一组地址` 当使用与第一组地址相同的代码时,第二组地址不会通过,因为标记名是复制的。相反,它会再次通过第一组地址 请您帮助我使用xslt在输出中填充所有地址,好吗即使标记具有相同的名称,如何使用xslt将地址拉到输出中?,xslt,Xslt,我正在尝试使用xslt将导入文件中接收到的所有地址拉到输出文件中。 我确实使用插入xslt中地址标记之间的代码完成了第一组地址` 当使用与第一组地址相同的代码时,第二组地址不会通过,因为标记名是复制的。相反,它会再次通过第一组地址 请您帮助我使用xslt在输出中填充所有地址,好吗 输出中的买方地址将填充卖方地址,因为标记名称相同。我试图引用xslt中的买方地址,以便在输出中的买方下通过,但只有卖方地址通过。很抱歉,我没有可复制的示例。卖方地址使用这行代码正确地通过,但当我为买方使用这行代码时,它
输出中的买方地址将填充卖方地址,因为标记名称相同。我试图引用xslt中的买方地址,以便在输出中的买方下通过,但只有卖方地址通过。很抱歉,我没有可复制的示例。卖方地址使用这行代码正确地通过,但当我为买方使用这行代码时,它不起作用,只是将卖方地址拉入买方地址
*****这是导入文件xml*****
<?xml version="1.0" encoding="ISO-8859-1"?>
<UniversalInterchange xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
<Body>
<OrgAddressGroup>
<OrgAddress>
<AddressType>Seller</AddressType>
<Address1>16 Far Away Place</Address1>
<Address2>17 Very Far Away Place</Address2>
<CompanyName>Test 123</CompanyName>
<City>Durban</City>
</OrgAddress>
<OrgAddress>
<AddressType>Buyer</AddressType>
<Address1>66 For Far Place</Address1>
<Address2>77 Not So Far Place</Address2>
<CompanyName>Test</CompanyName>
<Fax>+31(0)123456789</Fax>
<OrganizationCode>AAAbbbCCC</OrganizationCode>
<Phone>+31(0)12345678</Phone>
</OrgAddress>
<OrgAddress>
<AddressType>Sending</AddressType>
<Address1>123 Blue Rock Place</Address1>
<Address2>77 Highway Drive</Address2>
<CompanyName>Test</CompanyName>
<Fax>123456789</Fax>
<OrganizationCode>AABBCC</OrganizationCode>
<Phone>123456789</Phone>
</OrgAddress>
</OrgAddressGroup>
</Body>
</UniversalInterchange>
卖方
16遥远的地方
17非常遥远的地方
测试123
德班
买主
远地66
77不远的地方
试验
+31(0)123456789
aaabbccc
+31(0)12345678
发送
蓝岩广场123号
公路路77号
试验
123456789
AABBCC
123456789
*************这是我的xslt*************
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:param name="vDate" select="xyz"/>
<!-- This line of code and the in the orderDate tage is used to populate the date.These two line work together-->
<xsl:template match ="/">
<UniversalInterchange>
<Body>
<OrgAddressGroup>
<xsl:for-each select="UniversalInterchange/Body/OrgAddressGroup">
<OrgAddress>
<AddressType>Seller</AddressType>
<Address1>
<xsl:value-of select="OrgAddress/Address1"/>
<!-- <xsl:value-of select="UniversalInterchange/Body/OrgAddressGroup/OrgAddress/Address1"/>-->
</Address1>
<Address2>
<xsl:value-of select="OrgAddress/Address2"/>
</Address2>
<CompanyName></CompanyName>
<City></City>
</OrgAddress>
<OrgAddress>
<AddressType>Buyer</AddressType>
<Address1>
<xsl:value-of select="OrgAddress/Address1"/>
</Address1>
<Address2>
<xsl:value-of select="OrgAddress/Address2"/>
</Address2>
<CompanyName></CompanyName>
<Fax></Fax>
<OrganizationCode></OrganizationCode>
<Phone></Phone>
</OrgAddress>
<OrgAddress>
<AddressType>Sending</AddressType>
<Address1></Address1>
<Address2></Address2>
<CompanyName></CompanyName>
<Fax></Fax>
<OrganizationCode></OrganizationCode>
<Phone></Phone>
</OrgAddress>
</xsl:for-each>
</OrgAddressGroup>
</Body>
</UniversalInterchange>
</xsl:template>
</xsl:stylesheet>
<UniversalInterchange>
<Body>
<OrgAddressGroup>
<OrgAddress>
<AddressType>Seller</AddressType>
<Address1>16 Far Away Place</Address1>
<Address2>17 Very Far Away Place</Address2>
<CompanyName/>
<City/>
</OrgAddress>
<OrgAddress>
<AddressType>Buyer</AddressType>
<Address1>16 Far Away Place</Address1>
<Address2>17 Very Far Away Place</Address2>
<CompanyName/>
<Fax/>
<OrganizationCode/>
<Phone/>
</OrgAddress>
<OrgAddress>
<AddressType>Sending</AddressType>
<Address1/>
<Address2/>
<CompanyName/>
<Fax/>
<OrganizationCode/>
<Phone/>
</OrgAddress>
</OrgAddressGroup>
</Body>
</UniversalInterchange>
卖方
买主
发送
***********电流输出***********
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:param name="vDate" select="xyz"/>
<!-- This line of code and the in the orderDate tage is used to populate the date.These two line work together-->
<xsl:template match ="/">
<UniversalInterchange>
<Body>
<OrgAddressGroup>
<xsl:for-each select="UniversalInterchange/Body/OrgAddressGroup">
<OrgAddress>
<AddressType>Seller</AddressType>
<Address1>
<xsl:value-of select="OrgAddress/Address1"/>
<!-- <xsl:value-of select="UniversalInterchange/Body/OrgAddressGroup/OrgAddress/Address1"/>-->
</Address1>
<Address2>
<xsl:value-of select="OrgAddress/Address2"/>
</Address2>
<CompanyName></CompanyName>
<City></City>
</OrgAddress>
<OrgAddress>
<AddressType>Buyer</AddressType>
<Address1>
<xsl:value-of select="OrgAddress/Address1"/>
</Address1>
<Address2>
<xsl:value-of select="OrgAddress/Address2"/>
</Address2>
<CompanyName></CompanyName>
<Fax></Fax>
<OrganizationCode></OrganizationCode>
<Phone></Phone>
</OrgAddress>
<OrgAddress>
<AddressType>Sending</AddressType>
<Address1></Address1>
<Address2></Address2>
<CompanyName></CompanyName>
<Fax></Fax>
<OrganizationCode></OrganizationCode>
<Phone></Phone>
</OrgAddress>
</xsl:for-each>
</OrgAddressGroup>
</Body>
</UniversalInterchange>
</xsl:template>
</xsl:stylesheet>
<UniversalInterchange>
<Body>
<OrgAddressGroup>
<OrgAddress>
<AddressType>Seller</AddressType>
<Address1>16 Far Away Place</Address1>
<Address2>17 Very Far Away Place</Address2>
<CompanyName/>
<City/>
</OrgAddress>
<OrgAddress>
<AddressType>Buyer</AddressType>
<Address1>16 Far Away Place</Address1>
<Address2>17 Very Far Away Place</Address2>
<CompanyName/>
<Fax/>
<OrganizationCode/>
<Phone/>
</OrgAddress>
<OrgAddress>
<AddressType>Sending</AddressType>
<Address1/>
<Address2/>
<CompanyName/>
<Fax/>
<OrganizationCode/>
<Phone/>
</OrgAddress>
</OrgAddressGroup>
</Body>
</UniversalInterchange>
卖方
16遥远的地方
17非常遥远的地方
买主
16遥远的地方
17非常遥远的地方
发送
********所需输出*********
<UniversalInterchange>
<Body>
<OrgAddressGroup>
<OrgAddress>
<AddressType>Seller</AddressType>
<Address1>16 Far Away Place</Address1>
<Address2>17 Very Far Away Place</Address2>
<CompanyName/>
<City/>
</OrgAddress>
<OrgAddress>
<AddressType>Buyer</AddressType>
<Address1>66 For Far Place</Address1>
<Address2>77 Not So Far Place</Address2>
<CompanyName/>
<Fax/>
<OrganizationCode/>
<Phone/>
</OrgAddress>
<OrgAddress>
<AddressType>Sending</AddressType>
<Address1/>123 Blue Rock Place</Address1>
<Address2/>77 Highway Drive</Address2>
<CompanyName/>
<Fax/>
<OrganizationCode/>
<Phone/>
</OrgAddress>
</OrgAddressGroup>
</Body>
</UniversalInterchange>
卖方
16遥远的地方
17非常遥远的地方
买主
远地66
77不远的地方
发送
蓝岩广场123号
公路路77号
XSLT 1.0中的
。(您显然正在使用),xsl:value of
返回所选节点集的第一个节点的值
如果您想处理所有
OrgAddress
元素,请让您的xsl:for each
指令选择OrgAddress
,而不是它的父OrganizationAddressGroup请解决您的问题:您的XML不完整,您的XSLT不完整(XSLT),您的输出包含XSLT代码。感谢您的反馈,我尝试了您对循环的建议,但它似乎不起作用。任何进一步的想法都将受到高度赞赏。请编辑您的问题并发布一个可复制的示例-请参阅。输出中的买家地址将填充卖家地址,因为标签名称相同。输出中的买方地址将填充卖方地址,因为标记名称相同。我试图引用xslt中的买方地址,以便在输出中的买方下通过,但只有卖方地址通过。很抱歉,我没有可复制的示例。卖方地址使用这行代码正确通过“”但是,当我为买家使用这行代码时,它不起作用,只是将卖家地址拉入买家地址。你在浪费你(和我)的时间。我不会回应,直到你发布一个可复制的例子,一个我可以通过复制/粘贴运行的例子。