以下は、私が取り組んでいるサンプルの XML 構造です。
<command name="test">
<parameter index="2">4000</parameter>
<tag>4000</tag>
<parameter index="3">tag</parameter>
<parameter index="4">4000</parameter>
</command>
<command name="test">
<parameter index="2">4000</parameter>
<add>
<parameter index="1">ports</parameter>
<parameter index="2">1:1,</parameter>
<parameter index="3">3:1,</parameter>
<parameter index="4">3:9-12,</parameter>
<parameter index="5">4:12</parameter>
</add>
<parameter index="3">add</parameter>
<parameter index="4">ports</parameter>
<parameter index="5">1:1,</parameter>
<parameter index="6">3:1,</parameter>
<parameter index="7">3:9-12,</parameter>
<parameter index="8">4:12</parameter>
<tagged />
<parameter index="9">tagged</parameter>
</command>
XSL ファイルのコード スニペットは次のとおりです。
<xsl:key name="key" match="command[@name='test'][count(tag) > 0]" use="parameter[@index='2']"/>
<xsl:key name="port" match="command[@name='test'][count(add) > 0]" use="add/parameter"/>
<xsl:template match="xyz">
<xsl:variable name="portid" select="concat($slot-no,concat(':',$port-no))"/>
<xsl:apply-templates select="key('port',$portid)"/>
</xsl:template>
<xsl:template match="command[@name='test']">
<xsl:variable name="name" select="parameter[@index=2]"/>
<object>
<name><xsl:value-of select="$name"/></name>
<class>XYZ</class>
<attributes>
<attribute>
<name>XYZ1</name>
<value><xsl:value-of select="key('key',$name)/tag"/></value>
</attribute>
</attributes>
</object>
</xsl:template>
変数「portid」の形式は「x:x」です。ここで、x は数字です。ポート ID ごとに、値を関連付ける必要があり<parameter index="2">
ます。<add>
以前は、ノードの下に 1 つの portid 値しかなく、ソリューションは正常に機能していました。
ここで、値が「1:1」から「1:1」に、同様に「3:1」から「3:1」に変更されるように、XSL キー「ポート」の「use」式を変更する必要があります。 ' '3:9-12' を '3:9' 、 '3:10' 、 '3:11' 、 '3:12' に展開し、値とともに に保存します<parameter index="2">
。たとえば、「portid」が「1:1」、「3:1」、「3:9」、「3:10」、「3:11」、「3:12」のいずれかであるたびに、 「4:12」、関連付ける値は「4000」です。
これは可能ですか?私はこれに1週間取り組んでいますが、まだ解決策を見つけることができません。どんな助けでも本当に感謝しています。どうもありがとう。