我有一个由XSLT处理的XML文件,用于生成另一个XML文件。
是否有一种简单的方法可以了解XSLT为了生成输出文件而引用的原始XML消息中的所有可能元素/属性?
如果我查看w3school.com网站(http://www.w3schools.com/xsl/xsl_transformation.asp)上的示例,那么目录XML包含价格和年份等项目,但XSLT只会提取目录/ cd / title和catalog / cd / artist
所以我需要的是某种自动魔术工具,它可以分析xslt(可能是输入文件模式),给我一些输出文件将包含的属性列表。
感谢您的帮助
答案 0 :(得分:0)
如果您将xslt文件更改为此
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
如果有任何帮助,它会显示原始文件的副本吗?
答案 1 :(得分:0)
答案 2 :(得分:0)
自己制作这样的工具并不困难:
添加到与元素或属性匹配的任何模板:
<xsl:message>
<!-- Put all the data here that identifies the element attribute,
for example the Xpath expression that selects the current node
-->
</xsl:message>
您可以使用现有的转换来获取节点并生成一个选择节点的XPath表达式 - 在上面的xsl:message
中调用它们。例如,见:Generate/get xpath from XML node java
然后,您需要做的是将所有这些生成的XPath表达式与|
运算符组合在一起,并评估生成的XPath表达式 - 这将选择转换中实际引用的所有元素和属性。 / p>
如果您还要考虑由XSLT内置模板处理的元素/属性,只需覆盖转换中具有特定模板的元素/属性 - 这是一个很好的做法,额外的好处可能会在您的转型中发现错误。