2015-11-23 4 views
0

Я хотел бы, чтобы выделить весь текст из файла XHTML, за исключением всех гиперссылок элементов, которые необходимы для печати полностью:XSLT выделить весь текст и конкретный узел

XHTML

<?xml version="1.0" encoding="UTF-8" ?> 
<html> 
    <body> 
     <p>This is a paragraph.</p> 
     <p>This is another paragraph.</p> 
     <a href="www.link.com">This is a link.</a> 
    </body> 
</html> 

Желаемая выход: не

This is a paragraph. This is another paragraph. <a href="www.link.com">This is a link.</a> 

Я использую следующий XSLT, но получая никаких результатов:

XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:output method="text"/> 

    <xsl:template match="@*|node()"> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:template> 

    <xsl:template match="ancestor-or-self::text()"> 
     <xsl:value-of select="text()"/> 
    </xsl:template> 

    <xsl:template match="a"> 
     <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:template> 

</xsl:stylesheet> 

Любая помощь по этому вопросу будет очень признателен.

ответ

1

Попробуй так:

XSLT 1,0

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

<xsl:template match="a"> 
    <xsl:copy-of select="."/> 
</xsl:template> 

</xsl:stylesheet> 

Примечание метод вывода. См. Также: http://www.w3.org/TR/xslt/#built-in-rule

+0

Спасибо за ответ, но ни один из них не работает для меня. – BernatL

+1

@BernatL Что именно означает «* не работает»? - P.S. Посмотрите, как он работает здесь: http://xsltransform.net/94rmq68 –

+0

Я получаю _null_ результат, но, возможно, это ошибка процессора. Я проверяю ваше решение на разных XSLT-процессорах и выглядит так, как сейчас. – BernatL

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