У меня есть данные, которые выглядят так:
<line id="1">
<field id="1">324</field id="1">
<field id="2">abc</field id="2">
.................................
.................................
.................................
<field id="11">324321</field id="11">
<field id="12"
><![CDATA[6256812+0000140000000990000000000009900000000004058002C]]></field>
</line id="1">
<line id="2">
<field id="1">324</field id="1">
<field id="2">abc</field id="2">
.................................
.................................
.................................
<field id="8">324321</field id="11">
<field id="9"
><![CDATA[6256813+0000040000000890000000000008900000000003648002C]]></field>
</line id="2">
<line id="3">
<field id="1">324fsf</field id="1">
<field id="2">abcdf</field id="2">
.................................
.................................
.................................
<field id="12">32432s1</field id="11">
<field id="13"
><![CDATA[6256812+0000060000000750000000000007500000000003074002C]]></field>
</line id="3">
<line id="4">
<field id="1">3fsfa24</field id="1">
<field id="2">abasc</field id="2">
.................................
.................................
.................................
<field id="18">32fasf4321</field id="11">
<field id="19"
><![CDATA[6256837+0000010000000650000000000006500000000002664003C]]></field>
</line id="5">
Мне нужно взять номер перед ориентиром '+'.
<xsl:choose>
<xsl:when test="string(field[@id='9'])">
<xsl:value-of select="number(substring(field[@id='10'], 1,7))"/>
</xsl:when>
<xsl:when test="string(field[@id='11'])">
<xsl:value-of select="number(substring(field[@id='12'], 1,7))"/>
</xsl:when>
<xsl:when test="string(field[@id='17'])">
<xsl:value-of select="number(substring(field[@id='17'], 1,7))"/>
</xsl:when>
</xsl:choose>
может быть, есть более правильное решение?