не удалось получить значение узла в XSLT - PullRequest
0 голосов
/ 05 августа 2011

У меня здесь действительно странная проблема.Я не смог получить значение узла следующего XML-файла.Может кто-нибудь сказать мне, что не так с моим файлом xslt или xml?потому что я могу заставить xslt работать с другим XML-файлом, и это действительно просто.Так что я потерян здесь.XML-файл

   <catalog xmlns="http://www.unidata.ucar.edu/namespaces/thredds/InvCatalog/v1.0" xmlns:xlink="http://www.w3.org/1999/xlink" name="Test Data">
    <service name="tss" serviceType="OpenDAP" base="http://virbo.org/metamag/viewDataFile.jsp?filetype=data&amp;docname="/>
    <dataset name="Scalar">
        <access serviceName="tss" urlPath="597C7956-742D-FEC6-D151-A37A7176E867"/>
        <documentation type="summary">Single variable time series</documentation>
    </dataset>
    <dataset name="Structure">
        <access serviceName="tss" urlPath="E981F1AF-EF4A-11FB-AFB6-F20218B07783"/>
        <documentation type="summary">Vector (three component) time series</documentation>
    </dataset>
    <dataset name="Sequence">
        <access serviceName="tss" urlPath="64C78182-9BDC-CBC4-56C5-679808F51398"/>
        <documentation type="summary">Spectrum time series</documentation>
    </dataset>
</catalog>

XSLT-файл

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html"/>
    <xsl:template match="/">
        <h2>database</h2>
    <li>    
            <xsl:for-each select="/catalog/dataset/access/@serviceName">
                <xsl:value-of select="."/>
            </xsl:for-each>
     </li> 
    </xsl:template>
</xsl:stylesheet>

, но XSLT-файл работает со следующим XML-файлом, просто изменив xpath на / data / student / name / @ id

<data class="grade2">
    <student id="test1">
        <name id="1">Bitu Kumar</name>
        <course>MCA</course>
        <sem>6</sem>
        <marks>80</marks>
    </student>
    <student id="test2">
        <name id="2">Santosh Kumar</name>
        <course>MCA</course>
        <sem>5</sem>
        <marks>70</marks>
    </student>
    <student id="test3">
        <name id="3">Ashish</name>
        <course>M.Sc.</course>
        <sem>4</sem>
        <marks>80</marks>
    </student>
    <student id="test4">
        <name id="4">Mahesh</name>
        <course>MA</course>
        <sem>3</sem>
        <marks>80</marks>
    </student>
</data>

1 Ответ

0 голосов
/ 05 августа 2011

Ваш XSLT не учитывает пространства имен в вашем первом XML-файле.

Ваш второй XML-файл не имеет.

Исправьте XSLT, добавив объявление пространства имен, и измените выражение XPath так, чтобы оно использовало любой префикс пространства имен, который вы определяете.

Таким образом:

xmlns:myprefix="http://www.unidata.ucar.edu/namespaces/thredds/InvCatalog/v1.0"

...

/myprefix:catalog/myprefix:dataset/myprefix:access/@serviceName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...