2015-07-21 4 views
0

Я пытаюсь преобразовать канал bank of canada, чтобы использовать его в своем приложении.xslt namespace issue rss

Вот мой XML и мой XSL: http://xsltransform.net/bFDb2D4/4

Я не могу изменить XML, это подача RSS. Единственная линия, которая блокирует меня это одна:

xmlns="http://purl.org/rss/1.0/" 

Если удалить этот, мой селектор хорошо, и я получаю результат. Я новичок в xslt. Может кто-нибудь объяснить мне, что я сделал неправильно?

ответ

1

The

xmlns="http://purl.org/rss/1.0/" 

говорит, что все неквалифицированные имена элементов, как RDF, элемент название в XML имеют данное пространство имен. Для того, чтобы матч этих элементов вам нужно такое же определение пространства имен в вашем XSLT и inclue префикс пространства имен в ваших выражениях XPath:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:rss="http://purl.org/rss/1.0/" 
    exclude-result-prefixes = "rss"> 

<xsl:output method="html"/> 
<xsl:template match="/"> 
    <xsl:apply-templates select="/rss:RDF/rss:item"/> 
</xsl:template> 

<xsl:template match="rss:item"> 
    <p> 
     <xsl:value-of select="rss:title"/><br/> 
     <xsl:value-of disable-output-escaping="yes" select="description"/> 
    </p> 
</xsl:template> 

</xsl:stylesheet> 
+0

Это сработало! Большое вам спасибо, сэр http://xsltransform.net/bFDb2D4/5 – Giu