XMLフラグメントがあります
<node>
<abc>part_1</abc>
</node>
<node>
<abc>part_2</abc>
</node>
文字列を無視して、整数部分のみの属性で"part_"
指定するにはどうすればよいですか?具体的には、の属性の使用についてサポートが必要です。use
xsl:key
<key>
use
私は次のことを試みました:
<key name="uniq-abc" match='abc' use='substring-after(., '_')/>
しかし、それは機能していません。
ソースXMLは次のとおりです。
<ppp.PppControlProtocol>
<shelfId>1</shelfId>
<snmpPortId>841023490</snmpPortId>
<controlProtocolType>lCp</controlProtocolType>
<state>initial</state>
<lastClearedTime>0</lastClearedTime>
<restartCount>0</restartCount>
<deploymentState>0</deploymentState>
<objectFullName>network:138.120.242.60:ppp:interface-9/1/2.sts12_1:cp-Link</objectFullName>
<name>cp-Link</name>
</ppp.PppControlProtocol>
そして、以下の値を使用してIP部分を抽出したい138.120.242.60
<objectFullName>network:138.120.242.60:ppp:interface-9/1/2.sts12_1:cp-Link</objectFullName>
そして、これがXSLTの中でそれを抽出しようとしている部分です。
<xsl:key name="uniq-ips" match="objectFullName" use="substring-before(substring-after(., ':'), ':')"/>
キーの使用方法は次のとおりです。
<xsl:apply-templates select="ppp.PppControlProtocol/objectFullName[generate-id() = generate-id(key('uniq-ips', .)[1])]"/>
.
.
.
<xsl:for-each select="key('uniq-ips', $currentIP)">