2012-08-01 27 views
-1

编写制作XML文档副本的XSLT样式表。源文档具有大写的元素和属性名称。输出文档应该是精确副本,但元素和属性名称是小写的。例如,它应该转换:制作XML文档副本的XSLT样式表

<p> 
<BODY ATTRIBUTE="TheValue"> 
<H1>Hello world</H1> 
</BODY> 

into 

<body attribute=”TheValue”> 
<h1>Hello world</h1> 
</body> 

回答

2

试试这个:

<?xml version="1.0"?> 
<!-- Transform a document to itself, lowercasing all tag names --> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <!-- Import the identity transformation --> 
    <!-- Whenever you match any node or any attribute --> 
    <xsl:template match="node()|@*"> 
     <!-- Copy the current node --> 
     <xsl:copy> 
      <!-- Including any attributes it has and any child nodes --> 
      <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:template> 
    <!-- Whenever you match any node or any attribute --> 
    <!-- When you match any element --> 
    <xsl:template match="*"> 
     <!-- Create the same element with a lowercase name --> 
     <xsl:element name="{translate(name(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')}"> 
      <!-- Including any attributes it has and any child nodes --> 
      <xsl:apply-templates select="@*|node()"/> 
     </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 
+0

不工作。属性名称不是小写。 – mzjn 2012-08-01 17:33:26

+0

因为我没有做属性。你需要调整它。答案就在你面前。 – Vinit 2012-08-01 17:39:09

+0

因为它的功课.. – Vinit 2012-08-01 17:46:19