以下是我正在处理的示例 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 是一个数字。对于每个 portid,我需要与<parameter index="2">
值相关联。以前我们在节点下只有一个 portid 值,<add>
并且解决方案运行良好。
现在,我需要更改 XSL 键“端口”中的“使用”表达式,以便将值从“1:1”更改为“1:1”,类似地从“3:1”更改为“3:1” ' 并将 '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'。
这可能吗?我正在为此工作一周,但仍然无法找到解决方案。任何帮助将非常感激。非常感谢你们。