вот что у меня есть:
< ?xml version="1.0"?>
< xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
< xmlns:g="http://base.google.com/ns/1.0" version="1.0">
< xsl:output method="RSS 2.0"/>
< xsl:template match="Description">
< title>
< /title>
< /xsl:template>
< xsl:template match="Caption">
< description>
< /description>
< /xsl:template>
< xsl:template match="Url>
< link>
< /link>
< /xsl:template>
< xsl:template match="Condition">
< g:condition>
< /g:condition>
< /xsl:template>
< xsl:template match="Picture">
< g:image_link>
< /g:image_link>
< /xsl:template>
< /xsl:stylesheet>
когда я пытаюсь использовать это для меньшего файла, который я создал с помощью всего пары элементов, я получаю следующие ошибки отладки:
/Users/subnetfile/Desktop/finalxsltemplate.xslt:4:
parser
error :
error parsing attribute name
< xmlns:g="http://base.google.com/ns/1.0" version="1.0">
^
/Users/subnetfile/Desktop/finalxsltemplate.xslt:4:
parser
error :
attributes construct error
< xmlns:g="http://base.google.com/ns/1.0" version="1.0">
^
/Users/subnetfile/Desktop/finalxsltemplate.xslt:4:
namespace
error :
Namespace prefix xmlns on g is not defined
< xmlns:g="http://base.google.com/ns/1.0" version="1.0">
^
/Users/subnetfile/Desktop/finalxsltemplate.xslt:4:
parser
error :
Couldn't find end of Start Tag g line 4
< xmlns:g="http://base.google.com/ns/1.0" version="1.0">
^
/Users/subnetfile/Desktop/finalxsltemplate.xslt:20:
parser
error :
Unescaped '<' not allowed in attributes values
< link>
^
/Users/subnetfile/Desktop/finalxsltemplate.xslt:20:
parser
error :
attributes construct error
< link>
^
/Users/subnetfile/Desktop/finalxsltemplate.xslt:20:
parser
error :
Couldn't find end of Start Tag template line 19
< link>
^
/Users/subnetfile/Desktop/finalxsltemplate.xslt:22:
parser
error :
Opening and ending tag mismatch: stylesheet line 2 and template
< /xsl:template>
^
/Users/subnetfile/Desktop/finalxsltemplate.xslt:24:
parser
error :
Extra content at the end of the document
< xsl:template match="Condition">
^
error
xsltParseStylesheetFile : cannot parse /Users/subnetfile/Desktop/finalxsltemplate.xslt
(null)
Правильно ли я понимаю, что мне действительно нужно использовать только функцию 'match', поскольку все элементы просто имеют один подуровень атрибутов без значений атрибутов или чего-то подобного.
Кроме того, поля в конечном продукте ДОЛЖНЫ иметь соответствующие значения в исходном файле, или они могут быть вставлены для каждого элемента. например, для окончательного формата необходимо поле с именем payment_accepted и поле для соответствия отсутствует, но я просто хотел бы добавить одно и то же значение для каждого элемента, например Visa. Могу ли я вместо «match» использовать что-то вроде «foreach»?
РЕДАКТИРОВАТЬ:
< xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:g="http://base.google.com/ns/1.0"
version="1.0">
< xsl:output method="RSS 2.0"/>
< xsl:template match="*[local-name()='title']">
< xsl:text>title: </xsl:text>
< xsl:apply-templates/>
< /xsl:template>
< xsl:template match="*[local-name()='link']">
< xsl:text>link: </xsl:text>
< xsl:apply-templates/>
< /xsl:template>
< xsl:template match="*[local-name()='description']">
< xsl:text>description: </xsl:text>
< xsl:apply-templates/>
< /xsl:template>
< xsl:template match="language"/> < !-- suppress -->
< /xsl:stylesheet>
Это начинает что-то делать, но мне нужна другая подсказка, пожалуйста.
EDIT:
Я сделал некоторый прогресс и сделал что-то, что делает что-то правильно:
< xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:g="http://base.google.com/ns/1.0"
version="1.0">
< xsl:output method="text"/>
< xsl:template match="Description">
< xsl:text>title: </xsl:text>
< xsl:apply-templates/>
< /xsl:template>
< xsl:template match="Url">
< xsl:text>link: </xsl:text>
< xsl:apply-templates/>
< /xsl:template>
< xsl:template match="Caption">
< xsl:text>description: </xsl:text>
< xsl:apply-templates/>
< /xsl:template>
< xsl:template match="language"/> < !-- suppress -->
< /xsl:stylesheet>
и это работает без ошибок отладки, это не совсем то, что мне нужно, как бы я добавил атрибуты пространства имен Google, которые используют xlmnsg..etc, и некоторые атрибуты, которые не имеют соответствующих значений в файле XML, как я просто хочу назначить одно и то же g: условие 'new' каждому узлу (верно ли, что каждый элемент здесь называется узлом?)