Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 帮助翻译XSL转换的应用程序_Debugging_Xslt_Transformation - Fatal编程技术网

Debugging 帮助翻译XSL转换的应用程序

Debugging 帮助翻译XSL转换的应用程序,debugging,xslt,transformation,Debugging,Xslt,Transformation,必须有一些应用程序来做以下事情,但我甚至不知道如何谷歌为它 进退两难的是,我们必须回溯缺陷,这样做需要查看输出xml中的某些字段是如何由XSL生成的。困难的部分是花费数小时在XSL和XML中,试图找出它是在哪里生成的。如果您使用多个XSL转换和编辑,甚至调试都很困难,因为您仍然需要找出在该转换的特定场景中得到的主键 是否有一些软件程序可以接受XSL,并可能执行以下两种操作之一: 给它一个输出字段名,它将生成一个所有字段的列表 生成此字段的可能标准,以便您可以确定XSL中的十几个标准中哪一个符合您

必须有一些应用程序来做以下事情,但我甚至不知道如何谷歌为它

进退两难的是,我们必须回溯缺陷,这样做需要查看输出xml中的某些字段是如何由XSL生成的。困难的部分是花费数小时在XSL和XML中,试图找出它是在哪里生成的。如果您使用多个XSL转换和编辑,甚至调试都很困难,因为您仍然需要找出在该转换的特定场景中得到的主键

是否有一些软件程序可以接受XSL,并可能执行以下两种操作之一:

  • 给它一个输出字段名,它将生成一个所有字段的列表 生成此字段的可能标准,以便您可以确定XSL中的十几个标准中哪一个符合您的标准,
  • 以某种方式将xsl转换为更可读的if/then类型 格式(类似于使用Javadoc生成可读文档的方式)

  • 这是一个有趣的问题。你的建议也很有趣,但发展起来会很有挑战性;我知道没有COTS或FOSS解决方案,但以下是一些想法:

  • 你的第一种可能性基本上来自 编译器设计。我不知道有什么工具可以向用户公开, 但您可能会问XSLT处理器开发人员他们是否曾经这样做过 考虑以对XSLT有用的方式将这种分析外部化 开发者
  • 第二种可能性本质上是一个文档生成器 针对XSLT源代码。事实上,我已经帮一位客户完成了一个 过去的金融服务业(参见),但解决方案是 据我所知,该客户从未公开发布。信息技术 是否有可能在 XSLT输入和HTML或Docbook输出,但在 最一般的情况
  • 您可以考虑另一种方法:


    收紧界面定义。在您的评论中,您提到了问题的来源是来自发送方的错误数据还是XSLT中的错误的不确定性。更严格的接口定义将很好地为您服务。您可以通过更好地在XSD中键入、添加
    XSD:assertion
    语句(如果XSD 1.1是一个选项)或添加基于Schematron的接口检查级别来实现这一点,这将允许您在输入上使用基于XPath的断言的全部功能。拥有这样一个改进的、更具体的接口定义将有助于您和您的客户都知道哪些应该发送到系统中,哪些不应该发送到系统中。

    您不会说您当前正在使用哪些工具。像oXygen和StylusStudio这样的工具具有一些非常复杂的XSLT调试功能。OXygen的输出映射工具(请参阅)听起来很像您要的东西


    使用支持模式的样式表可以大大简化调试。至少在Saxon实现中,如果您在样式表中声明希望输出对特定模式有效,那么如果不是,Saxon将告诉您样式表中的哪个指令导致生成无效输出。有时它会在样式表编译时向您显示错误,甚至在您提供源文档之前。在我看来,这一能力被大大低估了。这里有更多细节:

    问题似乎是开发人员不熟悉xslt;您所拥有的是一个仍在构建中的xsl,因为您仍在调试它并试图使其工作。有很多标准的xml开发工具,我可以想到oxygen、xmlspy,这些工具使开发xsls更容易,但它们不会生成xsls供您选择。我认为您需要的是xpath表达式,因为您声明只需要一个输出字段。xslt也不能归结为一系列if-ELSE。您可以发布更多关于您尝试执行的操作的详细信息吗?您好,每个问题-问题是我们必须对正在处理的事务的异常/缺陷进行故障排除。一个步骤是找出它是由我们的系统还是发送者引起的。发送方发送一种类型的xml,然后我们使用(大部分)xsl文件转换为内部类型的xml。对于像我们这样大的系统,这些xsl非常复杂,调试可能需要数小时才能确定原因是源数据中的错误数据还是xsl转换的方式。您应该使xslt的输出符合模式定义。谢谢,我们使用xslt来确保这一点。在我的情况下,我们确实使用xslt进行模式验证。真正的问题在于获取输出xml值并插入到数据库中,然后您会遇到具有唯一约束的问题。此时,您必须确定这些唯一的键值是如何从xsl生成的,以查看它们是以这种方式生成的,还是以源systemNice建议中的值形式发送的,+1对于这些,我使用的是Ultra Edit版本20.00.0.1054,它唯一的功能是为任何标记打开标记自动关闭标记。我目前正在使用StylusStudio的调试功能。让我检查一下氧气工具,看看它是关于什么的。谢谢。坦斯克,这是有用的信息。在我的情况下,我们确实使用xslt进行模式验证。真正的问题在于获取输出xml值并插入到数据库中,然后您会遇到具有唯一约束的问题。此时,您必须确定这些唯一键值是如何从xsl生成的,以查看它们是以这种方式生成的,还是作为这些值从源系统开始发送的。