К сожалению, XSLT довольно не хватает функциональности для работы со строками. К счастью, то, что вы пытаетесь сделать, не так уж сложно.
Вам нужно начать с просмотра функции starts-with()
XPath . Возвращает true, когда первый параметр начинается со второго параметра.
Таким образом, вы можете построить xsl:if
элемент с starts-with()
в тесте, чтобы увидеть, начинается ли строка с «urn: ISBN»:
<xsl:if test="starts-with(text(),'urn:ISBN')">
<!-- This will be executed if the current node starts with 'urn:ISBN' -->
</xsl:if>
Следующее, что вам нужно сделать, это создать URL. Это тоже легко, используя функции concat()
и substring-after()
:
<xsl:if test="starts-with(text(),'urn:ISBN')">
<xsl:variable name="ISBN" select="substring-after(text(),'urn:ISBN:')"/>
<xsl:value-of
select="concat('http://www.amazon.com/gp/search/ref=sr_adv_b/?field-isbn=',$ISBN)"
/>
</xsl:if>
То, что делает этот фрагмент, выполняет синтаксический анализ ISBN (что происходит после «urn: ISBN») и сохраняет его в переменной. Затем он объединяет эту переменную с URL-адресом Amazon для получения окончательного результата.