基于 XML 节点对 XML 文件进行排序 &使用 XSLT 的 XML 注释 [英] Sorting XML file based on XML nodes & XML comments using XSLT

查看:30
本文介绍了基于 XML 节点对 XML 文件进行排序 &使用 XSLT 的 XML 注释的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要帮助根据 xml 节点对 XML 文件进行排序,还有一件事是我必须放置与该节点相对应的注释标签.

I need help in sorting an XML file based on xml nodes and ONE more thing is i have to place their comment tags corresponding to that node.

例如:输入 XML 文件是

For Example: Input XML File is

<?xml version="1.0" encoding="UTF-8"?>
<!-- catalog main -->
<catalog>
 <!-- first book id -->
 <book id="bk101">
  <!-- author name 1 -->
  <author>Gambardella, Matthew</author>
  <!-- title name 1 -->
  <title>XML Developer's Guide</title>
  <genre>Computer</genre>
  <!-- price 1 -->
  <price>44.95</price>
  <publish_date>2000-10-01</publish_date>
  <description>An in-depth look at creating applications 
      with XML.</description>
 </book>
 <Book id="bk102">
  <author>Ralls, Kim</author>
  <title>Midnight Rain</title>
  <genre>Fantasy</genre>
  <price>5.95</price>
  <publish_date>2000-12-16</publish_date>
  <description>A former architect battles corporate zombies, 
      an evil sorceress, and her own childhood to become queen 
      of the world.</description>
 </Book>


 <!-- languages -->
 <Languages>
  <!-- java comment -->
  <java>Galos, Mike</java>
  <c>Visual Studio 7: A Comprehensive Guide</c>
  <!-- dotnet comment -->
  <dotnet>Computer</dotnet>
  <!-- description -->
  <description>Microsoft Visual Studio 7 is explored in depth,
      looking at how Visual Basic, Visual C++, C#, and ASP+ are 
      integrated into a comprehensive development 
      environment.</description>
 </Languages>

 <!-- ABC book -->
 <ABC>
  <!-- ABC author -->
  <author1>Galos, Mike</author1>
  <title1>Visual Studio 7: A Comprehensive Guide</title1>
  <!-- ABC genre -->
  <genre1>Computer</genre1>
  <price1>49.95</price1>
  <publish_date>2001-04-16</publish_date>
  <!-- ABC description -->
  <description>Microsoft Visual Studio 7 is explored in depth,
      looking at how Visual Basic, Visual C++, C#, and ASP+ are 
      integrated into a comprehensive development 
      environment.</description>
 </ABC>
 <!-- ABC1 book -->
 <abc1>
  <!-- ABC1 author -->
  <author1>Galos, Mike</author1>
  <title1>Visual Studio 7: A Comprehensive Guide</title1>
  <!-- ABC1 genre -->
  <genre1>Computer</genre1>
  <price1>49.95</price1>
  <publish_date>2001-04-16</publish_date>
  <!-- ABC1 description -->
  <description>Microsoft Visual Studio 7 is explored in depth,
      looking at how Visual Basic, Visual C++, C#, and ASP+ are 
      integrated into a comprehensive development 
      environment.</description>
 </abc1>
</catalog>

<小时>

预期的输出 XML 文件应该是:


EXPECTED OUTPUT XML FILE SHOULD BE:

<?xml version="1.0" encoding="UTF-8"?>
<!-- catalog main -->
<catalog>
 <!-- ABC book -->
 <ABC>
  <!-- ABC author -->
  <author1>Galos, Mike</author1>
  <!-- ABC description -->
  <description>Microsoft Visual Studio 7 is explored in depth,
      looking at how Visual Basic, Visual C++, C#, and ASP+ are 
      integrated into a comprehensive development 
      environment.</description>
  <!-- ABC genre -->
  <genre1>Computer</genre1>
  <price1>49.95</price1>
  <publish_date>2001-04-16</publish_date>
  <title1>Visual Studio 7: A Comprehensive Guide</title1>
 </ABC>
 <!-- ABC1 book -->
 <abc1>
  <!-- ABC1 author -->
  <author1>Galos, Mike</author1>
  <!-- ABC1 description -->
  <description>Microsoft Visual Studio 7 is explored in depth,
      looking at how Visual Basic, Visual C++, C#, and ASP+ are 
      integrated into a comprehensive development 
      environment.</description>
  <!-- ABC1 genre -->
  <genre1>Computer</genre1>
  <price1>49.95</price1>
  <publish_date>2001-04-16</publish_date>
  <title1>Visual Studio 7: A Comprehensive Guide</title1>
 </abc1>
 <!-- first book id -->
 <book id="bk101">
  <!-- author name 1 -->
  <author>Gambardella, Matthew</author>
  <description>An in-depth look at creating applications 
      with XML.</description>
  <genre>Computer</genre>
  <!-- price 1 -->
  <price>44.95</price>
  <publish_date>2000-10-01</publish_date>
  <!-- title name 1 -->
  <title>XML Developer's Guide</title>
 </book>
 <Book id="bk102">
  <author>Ralls, Kim</author>
  <description>A former architect battles corporate zombies, 
      an evil sorceress, and her own childhood to become queen 
      of the world.</description>
  <genre>Fantasy</genre>
  <price>5.95</price>
  <publish_date>2000-12-16</publish_date>
  <title>Midnight Rain</title>
 </Book>
 <!-- languages -->
 <Languages>
  <c>Visual Studio 7: A Comprehensive Guide</c>
  <!-- description -->
  <description>Microsoft Visual Studio 7 is explored in depth,
      looking at how Visual Basic, Visual C++, C#, and ASP+ are 
      integrated into a comprehensive development 
      environment.</description>
  <!-- dotnet comment -->
  <dotnet>Computer</dotnet>
  <!-- java comment -->
  <java>Galos, Mike</java>
 </Languages>
</catalog>

推荐答案

看来我已经通过额外的实现解决了这个问题..
以下是新代码:-<代码>

It seems I have resolved this issue with an additional implementation..
Below is the new code:-

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:strip-space elements="*"/>
    <xsl:template match="*|@*">
        <xsl:copy-of select="preceding-sibling::node()[1]/self::comment()"/>
        <xsl:copy>
            <xsl:apply-templates select="@*"/>
            <xsl:apply-templates select="node()">
                <xsl:sort select="name()"/>
                <xsl:sort select="@*"/>
            </xsl:apply-templates>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

这篇关于基于 XML 节点对 XML 文件进行排序 &amp;使用 XSLT 的 XML 注释的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆