2012-06-18 4 views
1

Извините за немой вопрос, но обработка строк в xsl 1.0 не является одной из моих сильных сторон. Я ищу способ извлечь строку, содержащуюся между псевдотегами html. EG.Извлечение строки из строки с использованием xsl

<xsl:variable name="test"> 
    This is a string <link>http://www.stackoverflow.com</link> and some more stuff here 
</xsl:variable> 

Идея состоит в том, чтобы в итоге добавить еще две переменные, которые будут содержать.

var1 = http://www.stackoverflow.com и var2 = Это строка и еще кое-что здесь

Как я говорю, извините, это тусклый вопрос. Благодарю.

ответ

1

Вот как это сделать:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:variable name="test"> 
    This is a string <link>http://www.stackoverflow.com</link> and some more stuff here 
</xsl:variable> 

<xsl:variable name="vTestNodeset" select="document('')/*/xsl:variable[@name='test']"/> 

<xsl:variable name="var1" select="string($vTestNodeset/link)"/> 

<xsl:variable name="var2"> 
    <xsl:copy-of select="$vTestNodeset/text()"/> 
</xsl:variable> 

<xsl:template match="/"> 
    "<xsl:value-of select="$var1"/>" 
============  
    "<xsl:value-of select="$var2"/>" 
============  
    "<xsl:value-of select="normalize-space($var2)"/>" 
</xsl:template> 
</xsl:stylesheet> 

Когда это преобразование применяется на любой документ XML (не используется), разыскиваемый результат производства:

 "http://www.stackoverflow.com" 
============  
    " 
    This is a string and some more stuff here 
" 
============  
    "This is a string and some more stuff here" 
+0

Спасибо вам , Просто работа. –

+0

@ user1001421: Добро пожаловать. –

Смежные вопросы