1

以下は私のxmlです

<tag>
    <subTag1>
        <tagGroup11>
            <data111>
...

同じ xml 要素をすべて選択する必要がありますが、キャメル ケースを使用します。たとえば、XSLT 変換後の新しい xml は次のようにする必要があります

<Tag>
    <SubTag1>
        <TagGroup11>
            <Data111>A</Data111>
            <Data112>B</Data112>
            <Data113>C</Data113>
        </TagGroup11>
        <TagGroup12>
            <Data121>D</Data121>
            <Data122>E</Data122>
            <Data123>F</Data123>
        </TagGroup12>
    </SubTag1>
    <SubTag2>
        <TagGroup22>
            <Data221>twotwoone</Data221>
            <Data222>twotwotwo</Data222>
            <Data223>two two three</Data223>
        </TagGroup22>
        <TagGroup23>
            <Data231>twotwoone</Data231>
            <Data232>twotwotwo</Data232>
            <Data233>two two three</Data233>
        </TagGroup23>
    </SubTag2>
</Tag>

このためのxsltを手伝ってくれる人はいますか?

4

1 に答える 1

2

@arkonautom は有効な点を指摘しています。この変換に対する期待を完全に定義していません。とはいえ、以下はあなたが望むように見えることをします。

この XSLT の場合:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output omit-xml-declaration="no" indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:variable name="vLowercase" select="'abcdefghijklmnopqrstuvwxyz'"/>
  <xsl:variable name="vUppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>

  <xsl:template match="*">
    <xsl:element
      name="{concat(translate(substring(local-name(), 1, 1),
                              $vLowercase,
                              $vUppercase),
                    substring(local-name(), 2))}"
    >
      <xsl:apply-templates/>
    </xsl:element>
  </xsl:template>

</xsl:stylesheet>

...提供したXMLに対して実行されます(構造の残りの部分で肉付けされていると思います):

<tag>
  <subTag1>
    <tagGroup11>
      <data111>A</data111>
      <data112>B</data112>
      <data113>C</data113>
    </tagGroup11>
    <tagGroup12>
      <data121>D</data121>
      <data122>E</data122>
      <data123>F</data123>
    </tagGroup12>
  </subTag1>
  <subTag2>
    <tagGroup22>
      <data221>twotwoone</data221>
      <data222>twotwotwo</data222>
      <data223>two two three</data223>
    </tagGroup22>
    <tagGroup23>
      <data231>twotwoone</data231>
      <data232>twotwotwo</data232>
      <data233>two two three</data233>
    </tagGroup23>
  </subTag2>
</tag>

...必要な結果が生成されます。

<?xml version="1.0" encoding="UTF-8"?>
<Tag>
  <SubTag1>
    <TagGroup11>
      <Data111>A</Data111>
      <Data112>B</Data112>
      <Data113>C</Data113>
    </TagGroup11>
    <TagGroup12>
      <Data121>D</Data121>
      <Data122>E</Data122>
      <Data123>F</Data123>
    </TagGroup12>
  </SubTag1>
  <SubTag2>
    <TagGroup22>
      <Data221>twotwoone</Data221>
      <Data222>twotwotwo</Data222>
      <Data223>two two three</Data223>
    </TagGroup22>
    <TagGroup23>
      <Data231>twotwoone</Data231>
      <Data232>twotwotwo</Data232>
      <Data233>two two three</Data233>
    </TagGroup23>
  </SubTag2>
</Tag>
于 2013-11-07T21:18:41.623 に答える