0

XSLTを使用してXMLファイルを他のXMLに転送したい。XMLファイルは純粋なツリー構造のドキュメントではないため、変換を実行したいと思います。

以前の私のファイルは次のとおりです。

<uglyStartTag></uglyStartTag>
    <name>content</name>
<uglyEndTag></uglyEndTag>

また

<uglyStartTag/>
    <name>content</name>
<uglyEndTag/>

これが私のファイルです:

<beautyTag>
    <name>content</name>
</beautyTag>

どうすればいいですか?私はXSLTに慣れていないので、アドバイスをいただければ幸いです。

4

1 に答える 1

1

この変換

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

     <xsl:template match=
      "node()[preceding-sibling::uglyStartTag
            and
              following-sibling::uglyEndTag
              ][1]">
      <beautyTag>
        <xsl:copy-of select=
         "../node()[preceding-sibling::uglyStartTag
                  and
                    following-sibling::uglyEndTag
                   ]
         "/>
      </beautyTag>
     </xsl:template>
</xsl:stylesheet>

このXMLドキュメントに適用された場合(コメントでOPによって提供されます):

<t>
    <uglyStartTag />
    <name>dgsdgsdgsdg</name>
    <uglyEndTag />
</t>

必要な正しい結果を生成します。

<beautyTag>
   <name>dgsdgsdgsdg</name>
</beautyTag>
于 2012-08-05T15:24:33.077 に答える