XSLT 从 XMLNS/XML 获取正确的 GUID
XSLT get the right GUID from XMLNS/XML
我尝试从我的 XMLNS/XML 文件中获取正确的 GGUID。
我想要正确的 GGUID,这样我就可以用这个 ID 在我的进程上记录一些操作。
这是我的 XMLNS/XML:
<?xml version="1.0"?>
<s:Envelope>
<s:Body>
<element:saveAndReturnObjectResponse xmlns:element="http://some-link">
<element:return>
<element_II:fields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:element_II="http://some-link" xsi:type="element_II:GGUIDField">
<element_II:name>GGUID</element_II:name>
<element_II:fieldType>GGUID</element_II:fieldType>
<element_II:value>D6443FCE29334414AF2DC5A30C90506C</element_II:value>
</element_II:fields>
<element_II:fields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:element_II="http://some-link" xsi:type="element_II:GGUIDField">
<element_II:name>OWNERGUID</element_II:name>
<element_II:fieldType>GGUID</element_II:fieldType>
<element_II:value>00000000000000000000000000000000</element_II:value>
</element_II:fields>
</element:return>
</element:saveAndReturnObjectResponse>
</s:Body>
</s:Envelope>
XMLNS/XML是Statyc,所以不能做任何改动。
我知道的是:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:some-element="http://some-link" xmlns:some-element_II="http://some-link" xmlns:ns1="http://some-link" version="2.0">
<xsl:output media-type="text/xml" method="xml"></xsl:output>
<xsl:template match="/">
<xsl:if test="/s:Envelope/s:Body/element:saveAndReturnObjectResponse/element:return/element_II:fields[@xsi:type='element_II:GGUIDField']/element_II:name='GGUID'">
<xsl:value-of select="CONCAT('0x',/s:Envelope/s:Body/element:saveAndReturnObjectResponse/element:return/element_II:fields[@xsi:type='element_II:GGUIDField']/element_II:value)"></xsl:value-of>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
到目前为止一切顺利,但我的输出如下:
<?xml version="1.0"?>
<root>
<element_II:value>0xD6443FCE29334414AF2DC5A30C90506C 0x00000000000000000000000000000000</element_II:value>
</root>
我真正期望的输出是:
<?xml version="1.0"?>
<root>
<element_II:value>0xD6443FCE29334414AF2DC5A30C90506C</element_II:value>
</root>
两个元素都匹配
/s:Envelope/s:Body/element:saveAndReturnObjectResponse/element:return/element_II:fields[@xsi:type='element_II:GGUIDField']/element_II:value
所以你会得到 2 个结果...
如果您只想要第一个,请尝试过滤
element_II:name='GGUID'
例如
/s:Envelope/s:Body/element:saveAndReturnObjectResponse/element:return/element_II:fields[@xsi:type='element_II:GGUIDField'][element_II:name='GGUID']/element_II:value
我尝试从我的 XMLNS/XML 文件中获取正确的 GGUID。
我想要正确的 GGUID,这样我就可以用这个 ID 在我的进程上记录一些操作。
这是我的 XMLNS/XML:
<?xml version="1.0"?>
<s:Envelope>
<s:Body>
<element:saveAndReturnObjectResponse xmlns:element="http://some-link">
<element:return>
<element_II:fields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:element_II="http://some-link" xsi:type="element_II:GGUIDField">
<element_II:name>GGUID</element_II:name>
<element_II:fieldType>GGUID</element_II:fieldType>
<element_II:value>D6443FCE29334414AF2DC5A30C90506C</element_II:value>
</element_II:fields>
<element_II:fields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:element_II="http://some-link" xsi:type="element_II:GGUIDField">
<element_II:name>OWNERGUID</element_II:name>
<element_II:fieldType>GGUID</element_II:fieldType>
<element_II:value>00000000000000000000000000000000</element_II:value>
</element_II:fields>
</element:return>
</element:saveAndReturnObjectResponse>
</s:Body>
</s:Envelope>
XMLNS/XML是Statyc,所以不能做任何改动。
我知道的是:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:some-element="http://some-link" xmlns:some-element_II="http://some-link" xmlns:ns1="http://some-link" version="2.0">
<xsl:output media-type="text/xml" method="xml"></xsl:output>
<xsl:template match="/">
<xsl:if test="/s:Envelope/s:Body/element:saveAndReturnObjectResponse/element:return/element_II:fields[@xsi:type='element_II:GGUIDField']/element_II:name='GGUID'">
<xsl:value-of select="CONCAT('0x',/s:Envelope/s:Body/element:saveAndReturnObjectResponse/element:return/element_II:fields[@xsi:type='element_II:GGUIDField']/element_II:value)"></xsl:value-of>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
到目前为止一切顺利,但我的输出如下:
<?xml version="1.0"?>
<root>
<element_II:value>0xD6443FCE29334414AF2DC5A30C90506C 0x00000000000000000000000000000000</element_II:value>
</root>
我真正期望的输出是:
<?xml version="1.0"?>
<root>
<element_II:value>0xD6443FCE29334414AF2DC5A30C90506C</element_II:value>
</root>
两个元素都匹配
/s:Envelope/s:Body/element:saveAndReturnObjectResponse/element:return/element_II:fields[@xsi:type='element_II:GGUIDField']/element_II:value
所以你会得到 2 个结果...
如果您只想要第一个,请尝试过滤
element_II:name='GGUID'
例如
/s:Envelope/s:Body/element:saveAndReturnObjectResponse/element:return/element_II:fields[@xsi:type='element_II:GGUIDField'][element_II:name='GGUID']/element_II:value