value-of не возвращает никакого значения - PullRequest
1 голос
/ 31 октября 2011

Привет, у меня есть XSL, который я создаю, который выглядит так:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
    <datum><xsl:value-of select="/wechselkurse/datum[1]" /></datum>
    <kurs><xsl:value-of select="/wechselkurse/devise[@code='eur']/kurs" /></kurs>
</xsl:template>

вход выглядит так:

<wechselkurse xmlns="http://www.afd.admin.ch/publicdb/newdb/mwst_kurse" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.afd.admin.ch/publicdb/newdb/mwst_kurse http://www.afd.admin.ch/publicdb/newdb/mwst_kurse/tageskurse.xsd">
<datum>2011-10-25</datum>
<zeit>04:30:39</zeit>
<devise code="egp">
    <land_de>Ägypten</land_de>
    <land_fr>Egypte</land_fr>
    <land_it>Egitto</land_it>
    <land_en>Egypt</land_en>
    <waehrung>100 EGP</waehrung>
    <kurs>14.90711</kurs>
</devise>
<devise code="all">
    <land_de>Albanien</land_de>
    <land_fr>Albanie</land_fr>
    <land_it>Albania</land_it>
    <land_en>Albania</land_en>
    <waehrung>100 ALL</waehrung>
    <kurs>0.88044</kurs>
</devise>

и так далее. Единственный вывод, который я получаю, выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<datum/>
<kurs/>

так что я просто не получаю никакого значения из исходного XML. Element Devise существует с атрибутом code = eur, я в этом уверен, но я просто не могу понять, почему я ничего не получаю из исходного XML.

Пожалуйста, помогите мне.

1 Ответ

2 голосов
/ 31 октября 2011

В вашем .xsl есть около миллиона ошибок, но самое главное, что вы не используете пространства имен.

Ваш .xml содержит это пространство имен: xmlns="http://www.afd.admin.ch/publicdb/newdb/mwst_kurse"

Однако выне используйте его в вашем файле .xsl.Для этого сначала объявите его, а затем используйте его для доступа к нужным элементам:

<xsl:stylesheet version="1.0"
                xml:space="preserve"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:n="http://www.afd.admin.ch/publicdb/newdb/mwst_kurse">

    <xsl:output method='xml'/>

    <xsl:template match="/">
        <datum><xsl:value-of select="n:wechselkurse/n:datum" />

        </datum>
    </xsl:template> 
</xsl:stylesheet>

Кроме того, файл .xml может иметь только корневой элемент .Поэтому вы должны изменить свой файл .xsl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...