大写所有XML属性名称

stackoverflowuser2010

假设我有以下XML:

 <DataDictionary numberOfFields="5">
  <DataField name="Species" optype="categorical" dataType="string">
   <Value value="setosa"/>
   <Value value="versicolor"/>
   <Value value="virginica"/>
  </DataField>
  <DataField name="Sepal.Length" optype="continuous" dataType="double"/>
  <DataField name="Sepal.Width" optype="continuous" dataType="double"/>
  <DataField name="Petal.Length" optype="continuous" dataType="double"/>
  <DataField name="Petal.Width" optype="continuous" dataType="double"/>
 </DataDictionary>

有人可以提供一个将所有属性名称都大写的正则表达式(例如,用于vim或sed)吗?

例如,我想numberOfFields成为NumberOfFieldsdataType成为DataType

温特穆特

用sed处理XML通常不是一个好主意,因为sed以基于行的方式工作,而XML并不真正关心换行。例如,您可能有

<foo bar=
   "baz"/>

完全有效的XML中,使用sed(或其他纯文本工具)将很难处理。

我建议使用XSLT样式表:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output indent="yes"/>
  <xsl:variable name="vLower" select="'abcdefghijklmnopqrstuvwxyz'"/>
  <xsl:variable name="vUpper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>

  <xsl:template match="node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="@*">
    <xsl:variable name="capname"
                  select="concat(translate(substring(name(.),1,1), $vLower, $vUpper), substring(name(.), 2))"/>
    <xsl:attribute name="{$capname}">
      <xsl:value-of select="."/>
    </xsl:attribute>
  </xsl:template>
</xsl:stylesheet>

将其放在一个文件中,例如foo.xsl,然后使用XSLT处理器xsltproc来运行它:

xsltproc foo.xsl foo.xml

foo.xml您的XML文件在哪里或者,使用xalan

xalan -xsl foo.xsl -in foo.xml

任何XSLT处理器都可以;对于其他人,请查看他们的联机帮助页。

其工作原理如下:

  <xsl:template match="node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

应用于所有节点身份转换(在本例中不是属性,因为它们是在其他地方处理的),并递归地应用模板。这样一来,转换的输出即为输入的副本,其中没有其他模板适用。肉在里面

  <xsl:variable name="vLower" select="'abcdefghijklmnopqrstuvwxyz'"/>
  <xsl:variable name="vUpper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>

  <xsl:template match="@*">
    <xsl:variable name="capname"
                  select="concat(translate(substring(name(.),1,1), $vLower, $vUpper), substring(name(.), 2))"/>
    <xsl:attribute name="{$capname}">
      <xsl:value-of select="."/>
    </xsl:attribute>
  </xsl:template>

这适用于所有属性(@*)。

concat(translate(substring(name(.),1,1), $vLower, $vUpper), substring(name(.), 2))

是属性名称的大写版本,并将其分配给变量capname然后

<xsl:attribute name="{$capname}">
  <xsl:value-of select="."/>
</xsl:attribute>

插入一个具有大写名称和旧值的新属性,以代替旧的非大写属性。

这将与所有有效的XML输入一起使用。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

删除具有给定名称的所有XML属性

来自分类Dev

对象属性名称大写

来自分类Dev

获取所有属性名称

来自分类Dev

如何获取所有节点的名称和xml中xml的属性?

来自分类Dev

使用XSLT更改名称空间-不复制XML的所有属性

来自分类Dev

使用XSLT更改名称空间-不复制XML的所有属性

来自分类Dev

是否可以在不知道属性名称的情况下选择SQL中的所有XML属性?

来自分类Dev

使EditText提示所有大写

来自分类Dev

如何获取所有仅包含大写字母的子文件夹名称?

来自分类Dev

从 XML 获取所有属性值

来自分类Dev

xslt 从 xml 中删除所有属性

来自分类Dev

获取具有“名称”属性的XML元素的标签名称

来自分类Dev

SQL-将所有表的名称更改为所有以大写字母开头的驼峰式案例

来自分类Dev

获取具有相同名称的所有属性

来自分类Dev

从具有相同名称的节点获取所有属性

来自分类Dev

Notepad ++和XML-替换标签元素中所有单词的首字母并大写

来自分类Dev

jQuery获取与数据属性名称匹配的所有元素

来自分类Dev

从哪里获得所有JavaFX CSS属性名称的列表?

来自分类Dev

如何从JSON列获取所有不同的属性名称?

来自分类Dev

jQuery获取与数据属性名称匹配的所有元素

来自分类Dev

如何仅在类中获取所有属性名称

来自分类Dev

获取linq中某个属性名称的所有值?

来自分类Dev

从 C# 中的类中获取所有属性名称

来自分类Dev

从xml-conduit获取所有名称

来自分类Dev

使用Javascript获取XML中所有节点的名称

来自分类Dev

如何从相同的名称xml C#获取所有值

来自分类Dev

使用Javascript获取XML中所有节点的名称

来自分类Dev

在 Java 中重命名所有 XML 标记名称

来自分类Dev

文本转换之间的区别:大写;和所有大写

Related 相关文章

  1. 1

    删除具有给定名称的所有XML属性

  2. 2

    对象属性名称大写

  3. 3

    获取所有属性名称

  4. 4

    如何获取所有节点的名称和xml中xml的属性?

  5. 5

    使用XSLT更改名称空间-不复制XML的所有属性

  6. 6

    使用XSLT更改名称空间-不复制XML的所有属性

  7. 7

    是否可以在不知道属性名称的情况下选择SQL中的所有XML属性?

  8. 8

    使EditText提示所有大写

  9. 9

    如何获取所有仅包含大写字母的子文件夹名称?

  10. 10

    从 XML 获取所有属性值

  11. 11

    xslt 从 xml 中删除所有属性

  12. 12

    获取具有“名称”属性的XML元素的标签名称

  13. 13

    SQL-将所有表的名称更改为所有以大写字母开头的驼峰式案例

  14. 14

    获取具有相同名称的所有属性

  15. 15

    从具有相同名称的节点获取所有属性

  16. 16

    Notepad ++和XML-替换标签元素中所有单词的首字母并大写

  17. 17

    jQuery获取与数据属性名称匹配的所有元素

  18. 18

    从哪里获得所有JavaFX CSS属性名称的列表?

  19. 19

    如何从JSON列获取所有不同的属性名称?

  20. 20

    jQuery获取与数据属性名称匹配的所有元素

  21. 21

    如何仅在类中获取所有属性名称

  22. 22

    获取linq中某个属性名称的所有值?

  23. 23

    从 C# 中的类中获取所有属性名称

  24. 24

    从xml-conduit获取所有名称

  25. 25

    使用Javascript获取XML中所有节点的名称

  26. 26

    如何从相同的名称xml C#获取所有值

  27. 27

    使用Javascript获取XML中所有节点的名称

  28. 28

    在 Java 中重命名所有 XML 标记名称

  29. 29

    文本转换之间的区别:大写;和所有大写

热门标签

归档