在java中使用XSLT获取XML输出中的输入XML标记名称

时间:2012-11-03 12:39:04

标签: java xml xslt

我是xslt的新手。

我想要的是通过应用xslt从输入xml获取标记名称并将输出保存在output.xml中

我的input.xml是 -

<?xml version="1.0" encoding="UTF-8"?>
<productDetails>
<name>Mobile</name>
<price>999</price>
<stock>57</stock>
</productDetails>

我的input.xsl是 -

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>

<xsl:template match="/productDetails">
   <xsl:attribute name="name()"/>   
</xsl:template>
</xsl:stylesheet>

我的java代码是 -

   Source xmlInput = new StreamSource("input.xml");
    Source xsl = new StreamSource(new File("input.xsl"));
    Result xmlOutput = new StreamResult(new File("output.xml"));


        Transformer transformer = TransformerFactory.newInstance().newTransformer(xsl);
        transformer.transform(xmlInput, xmlOutput);

输出我想要的 -

<?xml version="1.0" encoding="UTF-8"?>
 name
 price
 stock

请任何人帮忙

提前谢谢。

1 个答案:

答案 0 :(得分:1)

写一个模板

<xsl:template match="*">
  <xsl:value-of select="name()"/>
</xsl:template>

如果要输出输入中所有元素的名称。如果您只需要叶元素的名称,请使用

<xsl:template match="*[not(*)]">
  <xsl:value-of select="name()"/>
</xsl:template>

您可能需要或想要添加空格以更好地格式化结果。并不是说你想要一个XML结果,但你在主级别用纯文本节点显示的结果样本并不是格式良好的XML文档。然而,XSLT允许输出这样的片段,所以如果你希望我的建议应该这样做。