【发布时间】:2018-02-17 08:20:36
【问题描述】:
XSLT 1.0 的新手,我真的很难提取以下 XML 的值(使用 XSLT1.0):
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<smallnote xmlns="http://soap.test.com/2005/ob">
<Id>1234</Id>
<Note>
<Id>4567</Id>
<sObject xsi:type="abc:Testcase" xmlns:abc="urn:soap.test.com">
<abc:Id>890</abc:Id>
<abc:Name>Some name</abc:Name>
</sObject>
</Note>
</smallnote>
</soapenv:Body>
</soapenv:Envelope>
期望的输出:
<?xml version="1.0" encoding="UTF-8"?>
<Id>1234</Id>
<NoteId>4567</NoteId>
<ObjType>Testcase</ObjType>
<ObjId>890</ObjId>
<ObjName>Some name</ObjName>
如何处理命名空间?我知道:
<xsl:value-of select="//*[local-name() = 'Id']" />
但它似乎不适用于具有多个 Id 字段的我。
首先删除命名空间是更好的方法吗?因为现在每当我尝试提取值时,我都很难选择正确的“路径”。
提前致谢
【问题讨论】:
-
看看这是否有帮助:stackoverflow.com/questions/34758492/… -- P.S.你确定这是你想要的输出吗?没有根元素? -- PP.S.如果您有多个 id,则不要使用后代
//轴;请改用显式路径。