как нацелиться на девятую позицию строки - PullRequest
1 голос
/ 16 февраля 2011

hii все может любой, пожалуйста, помогите мне

 <block2>

  <receiverAddress>BKTRUS33XBRD</receiverAddress>

  </block2>

в указанном выше адресе получателя, если x представлен в девятой позиции, нам нужно взять от 1 до 8 цифр, если x не представлен в девятой позициинам нужно обрезать последнюю букву этой строки

вывод, если x равен 9 позиции: BKTRUS33 если x отсутствует в девятой позиции: BKTRUS33XBR

как это сделать в xslt

1 Ответ

2 голосов
/ 16 февраля 2011

Это преобразование :

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="receiverAddress[substring(.,9,1)='X']">
     <xsl:value-of select="substring(.,1,8)"/>
     <xsl:text>&#xA;</xsl:text>
 </xsl:template>

 <xsl:template match="receiverAddress[not(substring(.,9,1)='X')]">
     <xsl:value-of select="substring(.,1,string-length() -1)"/>
     <xsl:text>&#xA;</xsl:text>
 </xsl:template>
</xsl:stylesheet>

при применении к этому документу XML:

<block2>
    <receiverAddress>BKTRUS33XBRD</receiverAddress>
    <receiverAddress>BKTRUS33YBRD</receiverAddress>
</block2>

создает искомое значение,правильные результаты:

BKTRUS33
BKTRUS33YBR

Примечание:

  1. Использование стандартной функции XPath substring().

  2. Как работает стандарт XPath 1.0 substring() и string-length() используются вместе, чтобы найти / исключить строку в конце другой строки.

  3. В XPath 2.0 можно использовать стандартную функцию XPath 2.0 ends-with().

  4. Как используется сопоставление с образцом, поэтому в шаблонах не требуется никаких условных инструкций XSLT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...