当前位置: 首页 > 知识库问答 >
问题:

使用XSLT在RSS XML中小写所有标记名称和属性

唐珂
2023-03-14

我怎样才能打开下面的(大写字母标签,即

<RSS xmlns:atom="http://www.w3.org/2005/Atom" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
    <CHANNEL>
        <title>Example Title</title>
        <LINK>Example Link</link>
        <atom:link HREF="http://example.com/feed" REL="self" TYPE="application/rss+xml"/>
        <itunes:subtitle>Example subtitle with itunes namespace</itunes:subtitle>
        <itunes:owner>
            <itunes:name>OWNER NAME</itunes:name>
            <itunes:email>owner@gmail.com</itunes:email>
        </itunes:owner>
        <ITEM>
            <TITLE>Title Name here</TITLE>
            <itunes:author>Author name here</itunes:author>
            <ENCLOSURE TYPE="audio/mpeg" URL="http://www.podtrac.com/abc.mp3" LENGTH="31805"/>
        </ITEM>
    </CHANNEL>
</RSS>

(小写字母标记,即

<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
    <channel>
        <title>Example Title</title>
        <link>Example Link</link>
        <atom:link href="http://example.com/feed" rel="self" type="application/rss+xml"/>
        <itunes:subtitle>Example subtitle with itunes namespace</itunes:subtitle>
        <itunes:owner>
            <itunes:name>OWNER NAME</itunes:name>
            <itunes:email>owner@gmail.com</itunes:email>
        </itunes:owner>
        <item>
            <title>Title Name here</title>
            <itunes:author>Author name here</itunes:author>
            <enclosure TYPE="audio/mpeg" url="http://www.podtrac.com/abc.mp3" length="31805"/>
        </item>
    </channel>
</rss>

使用XSLT?

注:

  1. 需要是所有小写的标记和属性,而不仅仅是我的

共有1个答案

祖迪
2023-03-14

这在XSLT-1.0中提供了所需的结果:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
    <xsl:output indent="yes" />
    <xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'" />
    <xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />

    <!-- lowercase'es all elements names and copies namespaces-->
    <xsl:template match="*">
        <xsl:variable name="rawName" select="substring-before(name(), ':')"/>
        <xsl:element name="{translate(name(), $uppercase, $smallcase)}" namespace="{namespace-uri()}">
            <xsl:copy-of select="namespace::*"/>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:element>
    </xsl:template>

    <!-- lowercase'es all attribute names -->
    <xsl:template match="@*">
        <xsl:attribute name="{translate(name(), $uppercase, $smallcase)}">
          <xsl:value-of select="." />
        </xsl:attribute>
    </xsl:template>

    <!-- copies the rest -->
    <xsl:template match="text() | comment() | processing-instruction()">
        <xsl:copy/>
    </xsl:template>

</xsl:stylesheet>
 类似资料:
  • 我必须从xslt文档中打印所有xsl:element和xsl:attribute标记的名称属性值。 下面是我的示例XSL: 预期产出为: TransactionDateTime ChangeIndicator

  • 问题内容: 鉴于以下课程, 我将在这样的Controller动作中返回其中之一, 但是我的客户端框架期望这些属性是小写的成功和信息。不必实际上具有小写的属性名称,是否可以通过正常的Json函数调用来实现这一想法? 问题答案: 实现此目的的方法是在此处实现一个自定义: 创建自定义ValueType并使用自定义JsonResult进行序列化 (原始链接 无效 ) 。 并使用替代的序列化程序,例如JSO

  • 我有一个Spring Boot应用程序,它在HSQLDB中用flyway生成一个模式。 问题是所有表名和列名都转换为大写(TBL_ROLE、ID、NAME)。目的是使db中的名称与我的脚本中定义的名称完全相同。

  • 问题内容: 我有这个HTML代码: 但它应该变成(对于所有可能的html标签): 问题答案: 改编自我对类似问题的回答 RegExp细分: 添加一些引号,并使用替换文本,它应该删除标记名之后的所有文本,直到标记结尾或just 为止。 请注意, 这不一定适用于 所有 输入,因为Anti-HTML + RegExp会告诉您。有一些后备功能,最明显的是会失败,还有其他一些坏的问题…我建议将Zend_Fi

  • 我是Jackson XML的新手,我需要在同一根元素下构造具有不同元素名称和属性的Jackson XML。 我期望的xml输出 我的pojo类(不确定如何添加剩余的元素和属性) 任何建议都将不胜感激。

  • 问题内容: 我正在使用JSON.NET,我想从XML转换为JSON。 我正在使用JsonConvert.SerializeXNode(node),我注意到我的json对象具有在其名称前面带有@的属性: 因此,例如:如果我有: JSON对象是: 为什么在JSON中插入“ @”,有什么方法可以避免插入“ @”字符? 问题答案: 我认为这就是json.net关于@符号的工作方式。您始终可以在json字符