不能';在XSLT中获取节点值

不能';在XSLT中获取节点值,xslt,Xslt,我这里有个很奇怪的问题。我无法获取以下xml文件的节点值。有人能告诉我xslt文件或xml文件有什么问题吗?因为我可以在其他xml文件上使用xslt,而且非常简单。所以我在这里迷路了。 xml文件 <catalog xmlns="http://www.unidata.ucar.edu/namespaces/thredds/InvCatalog/v1.0" xmlns:xlink="http://www.w3.org/1999/xlink" name="Test Data">

我这里有个很奇怪的问题。我无法获取以下xml文件的节点值。有人能告诉我xslt文件或xml文件有什么问题吗?因为我可以在其他xml文件上使用xslt,而且非常简单。所以我在这里迷路了。 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文件只需将xpath更改为/data/student/name/@id即可在以下xml文件上工作

    <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>
    
    
    比图库马尔
    马华
    6.
    80
    桑托什·库马尔
    马华
    5.
    70
    阿施施
    理学硕士。
    4.
    80
    马赫什
    文科硕士
    3.
    80
    
    XSLT不尊重第一个XML文件中的名称空间

    您的第二个XML文件没有任何

    通过添加名称空间声明修复XSLT,并更改XPath表达式,使其使用您定义的名称空间前缀

    因此:


    非常感谢您的回复,您能给出一个如何在xpath中使用名称空间前缀的示例吗?我应该添加什么名称空间?这一个?是的,您需要添加该名称空间,但还需要为其声明前缀,而不是将其保留为默认名称空间。在XPath中,使用名称空间前缀为每个元素节点测试添加前缀。我做了相应的编辑。
    xmlns:myprefix="http://www.unidata.ucar.edu/namespaces/thredds/InvCatalog/v1.0"
    
    /myprefix:catalog/myprefix:dataset/myprefix:access/@serviceName