XSLT-подстрока и хэш-тег - PullRequest
       21

XSLT-подстрока и хэш-тег

0 голосов
/ 15 августа 2011

Может кто-нибудь сказать мне, почему это не работает?

На протяжении всего моего документа у меня есть несколько разрывов столбцов, помеченных следующим образом: <cb ed="#S" n="45rb"/> Хэш-тег существует для ссылки на другой элемент, где идентифицирован исходный документ.

Теперь я хочу отобразить разрыв столбца в следующем документе.Так что это выглядит так: | S45rb |.Я думал, что мог бы использовать простую функцию substring, чтобы избавиться от хеш-тега следующим образом.

<xsl:template match="TU:cb">
    <xsl:variable name="hashms"><xsl:value-of select="//TU:cb/@ed"/></xsl:variable>
    <xsl:variable name="ms"><xsl:value-of select="substring($hashms,1,1)"/></xsl:variable>      

    <span>| <xsl:value-of select="$ms"/> <xsl:value-of select="//TU:cb/@n"/> |</span>
</xsl:template>

Когда я делаю это таким образом, я получаю следующий результат: | # 75ra |.Разве первый 1 в аргументе не должен ссылаться на первый символ строки, а затем второй 1 сказать ему, чтобы он переместился на один символ и оставил мне желаемый S?Вместо этого я не получаю S, а только хэш-тег.Есть ли что-то о хеш-тегах и строках, которых я не знаю?

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 15 августа 2011

XSL - это не 0 основание, если вы хотите начать со второго символа (после #), оно должно быть 2, а не 1.

http://www.w3schools.com/Xpath/xpath_functions.asp

substring($hashms,2,1) = S

Вы также можете опустить длину, которая может быть полезна для расширения в дальнейшем. Особенно, если после # стоит идентификатор, зачем ограничивать ваш код?

substring($hashms,2) = S
substring('#S2',2) = S2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...