Ниже приведен пример структуры 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' имеет видв форме «х: х», где х является числом.Для каждого портида мне нужно связать со значением <parameter index="2">
.Ранее у нас было только одно значение portid в узле <add>
, и решение работало нормально.
Теперь мне нужно изменить выражение 'use' в ключе XSL 'port', чтобы значения были изменены с '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».
Возможно ли это?Я работаю над этим в течение недели и до сих пор не могу найти решение.Любая помощь могла бы быть полезна.Большое спасибо, ребята.