XSLT:如何在同一篇文章中访问名称空间类型和没有名称空间类型的元素

Rudramuni TP

请建议访问没有任何名称空间的元素。但是我的代码能够访问和更改具有名称空间的节点(元素)。我正在使用XSLT2版本。查找我的xml(我将DTD路径映射到了我的本地路径,也建议在没有DTD帮助的情况下访问XML。

InPut XML:

    <!DOCTYPE article PUBLIC "-//ES//DTD journal article DTD version 5.2.0//EN//XML" "D:/DTDs/Els-parser/art520.dtd">
    <article>
    <fm>
        <ce:title>The title</ce:title>
        <ce:author-group>
            <ce:author><ce:surname>Rudramuni</ce:surname><ce:given-names>TP</ce:given-names></ce:author>
        </ce:author-group>
    </fm>
    <body>
        <ce:sections>
            <ce:section>
                <ce:section-title>The first Head</ce:section-title>
                <ce:para>Tha first para</ce:para>
            </ce:section>
        </ce:sections>
    </body>
    <back>
    <ref><ce:author>Vijay</ce:author></ref>
    </back>
</article>

XSLT:

 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:ce="http://www.elsevier.com/xml/common/dtd"
            xmlns:sb="http://www.elsevier.com/xml/common/struct-bib/dtd"
            xmlns:xlink="http://www.w3.org/1999/xlink"
            xmlns:mml="http://www.w3.org/1998/Math/MathML"
            version='2.0'>
<xsl:template match="@*|node()">
       <xsl:copy>
           <xsl:apply-templates select="@* | node()"/>
       </xsl:copy>
</xsl:template>
 <xsl:template match="fm">
     <xsl:element name="ce:front"><xsl:apply-templates/></xsl:element>
</xsl:template>
 <xsl:template match="ce:author">
<xsl:element name="name"><xsl:apply-templates/></xsl:element>
</xsl:template>
</xsl:stylesheet>

所需结果:

    <?xml version="1.0" encoding="UTF-8"?>
<article>
   <ce:front>
    <ce:title>The title</ce:title>
        <ce:author-group><name><ce:surname>Rudramuni</ce:surname><ce:given-names>TP</ce:given-names></name></ce:author-group>
    </ce:front>
    <body><ce:sections><ce:section><ce:section-title>The first Head</ce:section-title><ce:para>Tha first para</ce:para></ce:section></ce:sections></body>
    <back>
    <ref><name>Vijay</name></ref>
    </back>
</article>

但是我得到了一些额外的名称空间,例如“ xmlns =“ http://www.elsevier.com/xml/ja/dtd”和xmlns =“”,并且为某些元素(例如view =“ all”)找到了一些额外的属性。预先感谢,请提出建议。

亚伯

您最近似乎对XSLT 2.0提出了很多问题,这当然可以,但是在提出问题时,请考虑以下准则:

  • 使用有效的示例,我们可以重现您的问题。在这个问题和其他问题中,您的示例格式不正确(例如,在该问题中缺少名称空间),这很难为您提供帮助(它们会否决或关闭您的问题,请参见如何提问)。
  • 尽量减少示例,否则人们将无法帮助您,因为很难理解所提出的问题。在这种情况下,两行XML和XSLT可以解释您的问题。
  • 运行粘贴到此处的代码,然后复制您得到的输出(或错误)。例如,在这个问题中,输出的名称空间格式不正确,不可能是任何XSLT处理器的输出。

要回答您的问题,您可以使用通配符NameTest,它在任何命名空间中选择该名称:

select="*:something" 
select="*:foo/*:bar"
select="*:foo[contains(., @*:some-attr)]"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何隐藏没有名称属性的odoo操作类型按钮?

如何在没有名称空间的情况下进行封送?

wsimport-导入的模式,没有名称空间==>包,名称为“ generated”

错误:名称空间“ std”中没有名为“ vector”的类型

在Yii2中使用没有名称空间的类

错误:检测到“站点”没有名称空间,但是没有目标名称空间的组件无法从架构文档中引用

如何在静态页面中显示最后一篇文章的标题?

没有名称空间时如何在laravel 5.6上使用google-api-php-client

在Python中遍历没有名称空间的XML树

如何在没有名称空间的情况下将名称空间和xsi添加到传入XML

有没有办法在没有名称空间的C ++中嵌套枚举?

如何在没有名称空间的情况下访问XML元素

如何将xml的一部分转换为没有名称空间的新xml?

获取与类型关联的所有名称空间?

Android NDK-名称空间“ std”中没有名为“ function”的类型

CLR如何在运行时区分不同程序集中具有相同名称但没有名称空间的类?

XSLT创建没有名称空间的内容

名称空间“ std”中没有名为“ nullptr_t”的类型

如何在没有名称空间的情况下调用Ruby类

没有名称空间前缀的SOAP 1.1信封是否有效?

没有名称空间的XSLT复制节点

XML中没有名称空间的元素

共同作者加上Wordpress插件-列出同一篇文章的所有作者

如何在没有限定符的所有名称空间中使名称空间中的符号可访问?

如何在 ruby on rails 中显示每个用户的最后一篇文章?

我如何使用 JQuery 从没有名称的数组 Json 中获取元素

如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?

如何只编辑一篇文章而不是迭代循环所有文章?

如何在 Python Selinium 中单击没有名称和 ID 的“接受 Cookie”按钮