繁体   English   中英

如何确定XSLT将引用XML文件中的哪些属性/元素?

[英]How can I tell which attributes/elements in my XML file an XSLT will reference?

我有一个XSLT正在处理的XML文件,以生成另一个XML文件。

有没有一种简单的方法可以知道XSLT将引用原始XML消息以产生输出文件的所有可能的元素/属性?

如果我在w3school.com网站( http://www.w3schools.com/xsl/xsl_transformation.asp )上查看示例,则目录XML包含价格和年份等项目,但XSLT仅会提取catalog / cd /标题和目录/ cd /艺术家。

因此,我需要一种可以分析xslt(也许是输入文件模式)的 自动化魔术 工具,以便为我提供输出文件将包含的属性列表。

感谢您的协助

如果您将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>

如果有帮助,它将显示原始文件的副本?

很好的想象力! 好。 当前没有可用的工具可以分析XSLT,并让您知道“ XSLT在XML文件中引用的所有元素/属性”! 你必须手动做..

自己制作这样的工具并不难:

添加到与元素或属性匹配的任何模板中

<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调用它们。 例如,请参见以下内容: 从XML节点java生成/获取xpath

然后,您需要将所有这些生成的XPath表达式与|组合在一起| 运算符并评估生成的XPath表达式-这将选择转换中实际引用的所有元素和属性。

如果您还想考虑由XSLT内置模板处理的元素/属性 ,只需在转换中覆盖具有特定模板的元素/属性即可-这是一个好习惯,因为这样做有额外的好处,可能会在转换中发现错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM