格式化XML文件内容

时间:2014-10-09 17:07:10

标签: xml xslt

我知道有很多关于使用XML XSL格式化stylesheet文件的问题。但是,我不是要格式化输出,而是文件内容本身。我的意思是我目前有一个XML文件(它是一个SolidWorks素材库),你不能自动按字母顺序排列XML文件的输出,我实际上必须按字母顺序排列XML文件的内容

有办法做到这一点吗?请看下面的我的意思快照。

谢谢!我应该注意到,我在XMLXSL中基本没有经验,但是做了相当多的代码,请耐心等待。

以下是我所拥有的简化版本:

<mstns:materials xmlns:mstns="http://www.solidworks.com/sldmaterials" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:sldcolorswatch="http://www.solidworks.com/sldcolorswatch" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2008.03">
   <classification name="Aluminum Alloy">
   <classification name="Steel">
   <classification name="Copper">
   <classification name="Rubber">
</mstns:materials>

这就是我要将其转换为:

<mstns:materials xmlns:mstns="http://www.solidworks.com/sldmaterials" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:sldcolorswatch="http://www.solidworks.com/sldcolorswatch" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2008.03">
   <classification name="Aluminum Alloy">
   <classification name="Copper">
   <classification name="Rubber">
   <classification name="Steel">
</mstns:materials>

(即按字母顺序排列分类部分)。

现在我很确定我需要使用XLST但是我不确定我的代码或者真的如何实现它以输出新的XML文件或在Web浏览器中或者其他的东西。这是我到目前为止所做的事情(我从this post获取了相当多的一行:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <!-- the identity template copies everything verbatim -->
  <xsl:template match="node()|@*">
   <xsl:copy>
     <xsl:apply-templates select="node()|@*" />
   </xsl:copy>
 </xsl:template>

 <!-- special template for <Group> that sorts its children -->
 <xsl:template match="mstns:materials">
   <xsl:copy>
     <xsl:copy-of select="@*" /> <!-- copy attributes, if any -->
     <xsl:apply-templates select="classification">
        <xsl:sort select="@name" order="ascending"/>
     </xsl:apply-templates>
   </xsl:copy>
 </xsl:template>
</xsl:stylesheet>

0 个答案:

没有答案