使用XSLT在XML中搜索替换值



我是XSLT新手,需要一些帮助,我得到了一个原始XML,下面我需要转换为转换的XML

原始

<?xml version="1.0" encoding="UTF-8"?>
<cXML payloadID="121" timestamp="2022-09-12" version="1.2.031" xml:lang="en-US">
<Header>
<From>
<Login domain="RollID">
<Value>ABC12100</Value>
</Login>
<Login domain="NameID">
<Value>BOB</Value>
</Login>
<Login domain="CourseID">
<Value>Default</Value>
</Login>
</From>
<Header>
<OrderID>
<OrderHeaderID sampleID="sdhjgwsd" orderDate="TEST-2022-09-12T21:30:31+02:00" orderID="66625" orderType="regular" orderVersion="1" type="new">
</OrderID>
</cXML>

转换后的XML

<?xml version="1.0" encoding="UTF-8"?>
<cXML payloadID="121" timestamp="2022-09-12" version="1.2.031" xml:lang="en-US">
<Header>
<From>
<Login domain="RollID">
<Value>ABC12100_TEST</Value>
</Login>
<Login domain="NameID">
<Value>BOB</Value>
</Login>
<Login domain="CourseID">
<Value>Default</Value>
</Login>
</From>
<Header>
<OrderID>
<OrderHeaderID sampleID="sdhjgwsd" orderDate="2022-09-12T21:30:31+02:00" orderID="66625_**TEST**" orderType="regular" orderVersion="1" type="new">
</OrderID>
</cXML>

我需要OrderId和cXML/Header/From/Login[@domain='RollID']/的值,以便附加转换XML中提到的TEST。请帮忙!!

使用标识模板编写一个转换以复制所有未更改的内容,再加上一个转换所选属性的模板

<xsl:template match="@orderID">
<xsl:attribute name="orderID"><xsl:value-of select="."/>_**TEST**</xsl:attribute>
</xsl:template>

这个问题确实让人感觉像是在没有先阅读的情况下就开始使用XSLT。花几个小时在一本书或教程上会是一个很好的时间投资。

此外,在XSLT问题中,判断您使用的是1.0、2.0还是3.0总是一个好主意,因为所有这些都在广泛使用,而且答案往往会有所不同。

最新更新