问题标签 [xmlspy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xml - 还指定 XSD 时忽略 DTD?
在为 XML 文档同时指定 DTD 和 XSD 时,验证器似乎会针对 XSD 进行验证并完全忽略 DTD。
我已经在 XMLSpy 2018sp1 和 Xerces 的 StdInParse 工具中验证了这一点。
标准用例是我们引用(并且从不编辑)的行业标准 DTD,我必须对其进行验证。除此之外,我们使用我们自己的 XSD 进一步约束 XML。
我的直觉是,如果两者都指定了,DTD 和 XSD 都应该通过验证才能验证文档吗?但也许 XSD 被认为可以取代任何 DTD?
示例 XML - 在下面 - foo.dtd 将永远不会用于验证文档。即使它违反 foo.dtd,它也会将文档视为有效,前提是它针对 foo.xsd 进行验证。
如果您从<Foo>
foo.dtd 中删除属性并再次验证,例如 XMLSpy 将突然发现任何 DTD 问题....将 XSD 位置放回 Foo,错误再次消失!
任何人都可以确认什么是正确的行为,如果有的话?
xml - XPath:为什么 /document-node() 匹配文档节点?
XPath 表达式/
返回文档节点。
一个 XPath 表达式/html
等效于/child::html
并且给定一个 HTML 文档将返回 html 元素。这当然是通过转到文档节点(由 表示/
)然后找到作为 html 标记的子元素来评估的。
那么为什么/document-node()
实际上返回文档节点?
给定一般的 XPath 表达式规则,我假设/document-node()
它等价于/child::document-node()
,并且/child::document-node()
应该返回一个空节点序列(因为文档节点永远不是文档节点的子节点)。事实上/child::document-node()
确实返回了一个空节点序列,这让我相信它/document-node()
不等于/child::document-node()
. 这似乎违反了一般 XPath 表达式规则,其中空轴是隐含的子轴1。
是否有一些特殊规则,当你有一个document-node()
轴的步长时,假设是self
而不是child
?我正在使用最新版本的 Altova XMLSpy (2018 sp1)。或者,这是 XMLSpy 中的错误吗?还是我对一般 XPath 表达式规则的某些理解不正确?
注意:对于任何尝试这个的人,只有 XPath 2 和 XPath 3 支持document-node()
。
1更新:作为一个不相关的 FYI,我从 Mads Hansen 的回答中学到了一些新东西:在 XPath 2 和 XPath 3 中,除非有属性测试,否则空轴是隐含的子轴;如果有一个属性测试,它实际上是一个隐含的属性轴。所以 while/html
是隐含/child::html
的,/attribute()
是隐含的/attribute::attribute()
。
html - 通过漂亮打印正确表示的代码
我的代码表示存在问题。这由我的 XSLT 正确处理,但输出很丑陋且不符合预期。通常,pretty-print
-Function 可以完美运行,但在我进行更改后无法正常工作,我不知道该怎么做。我认为<xsl:apply-templates>
我在这里使用的有问题。有没有办法在漂亮的打印后得到漂亮的代码?
注意:我使用的是 XSLT 版本 1,我正在使用 Altova XMLSpy 进行编码。
这是我的 XML:
这是我的 XSLT:
正如我所提到的,结果是正确的,它只是缩进和表示。这就是它的样子:
但它现在看起来像这样:
character-encoding - 如何在 XMLSpy 中重新编码 XML 文档以使用实体
我有一个相当大的 XSLT 模板,其中包含双语文本(UTF-8 中的国家字符)。我正在寻找一个函数,它将重新编码CDATA
内部的所有元素以使用 XML#
实体,允许我将 XSLT 存储为纯US-ASCII
编码。
这是一个基本示例:
whereé
被编码为C3 A9
. 所需的输出将是
其中é
对应于 的代码点'LATIN SMALL LETTER E WITH ACUTE' (U+00E9)
。在第一个示例中更改编码前导码会导致错误,因为 UTF-8 字节变得无效。
有没有一种简单的方法可以做到这一点,还是我必须求助于宏?
java - 无法从 WSDL 创建 Web 服务(netbeans:指定的 WSDL 文件中没有服务。)
我在 Altora XMLSpay 中创建了 WSDL 文件,我想在 Netbeans 中创建 Web 服务(来自 WSDL 的 Web 服务...),但是在添加 .wsdl 文件时,Netbeans 总是写“指定的 WSDL 文件中没有服务”。你能帮助我吗?我的 wsdl 文档网有什么问题?
xml - XMLSpy 升级到 2019 时出现 XSL 和 Schematron 错误
在 XMLSpy 升级到 2019 之前,我们使用的脚本运行良好。创建它们的人不再在这里工作。现在我们在使用脚本进行转换和验证它时收到错误消息。有谁知道如何纠正这个问题?
谢谢,
雷切尔
使用脚本时的错误消息:
验证时的部分错误消息:
xml - 如何删除扁平 xsd 中未使用的类型?
所以,我的问题如下。我有一个 XSD 文件,该文件的顶部包含另一个架构。包含的架构有另一个依赖项,等等其他几个文件。我决定将 xsd 文件扁平化为单个文件会更容易。我现在有一个 28,000 行的 XSD 文件,其中包含许多未使用的类型。我需要将扁平文件上传到某个地方,但现在它太大了。我能够使用 XMLSpy 展平 xml。
由于文件太大,我上传到这里查看:https ://filebin.net/m9ldhtty4rkmgixj/FlatRates.xsd
有没有办法删除所有非手动未使用的无用依赖项?
xml - 累加器不适用于 Saxon PE 9-9-1-5 Java 的当前文档
我有一个输入 XML:
在我的 xslt 模板中,我想直接在 MessageFormat 下计算每个 StructFormat 的 (FieldFormat/@length + string-length(TagField/@value):
当我使用 XML Spy Professional 2020 SP1 运行它时,我得到了输出:
但是当我用 Saxon 9-9-1-5 Java 运行它时,java -cp /d/SaxonPE9-9-1-5J/saxon9pe.jar net.sf.saxon.Transform -s:format.xml -xsl:accumulator.xslt -o:output.xml
我得到了错误:
在 accumulator.xslt 的第 13 行第 83 列的 xsl:attribute/@select 中评估 (fn:accumulator-before(...)) 时出错:XTDE3362:累加器位置计数不适用于未知调用者调用的当前文档(类net.sf.saxon.expr.instruct.ForEach) at file:/D:/xslt/accumulator.xslt#11 在 accumulator.xslt 第 9 行带有 match="/" 的模板规则中,累加器位置计数不适用于当前文件
我的蓄能器出了什么问题?为什么它适用于 XML Spy,而不适用于 Saxon 9.9?
实际上我想在我的累加器中添加一个条件来检查TagField/@value
变量中的值是否出现$msg
在正确的位置。
例如 for StructFormat[@name='TransportEventHeader']
,$msg 中的前 3 个字符是“H0”,所以它匹配StructFormat[@name='TransportEventHeader']/TagField/@value
,在这种情况下应该将长度添加到我的累加器中,如果没有,则不应该添加。我不知道如何在累加器中实现它。
json - JSON Schema Draft v7 - 基于通用枚举类型选择的附加枚举属性定义 - 在 XMLSpy Pro 2020 中进行测试
我正在尝试定义一个 json 模式,该模式具有许多对象的通用枚举类型,然后根据选择的枚举,定义枚举的可能组合以及所需的其他元素。该示例具有 {IDNumber, Color, Furniture Type} 的家具数据,然后根据从枚举列表中选择的类型,获取分配有不同枚举的函数。我还将“分配的人员”作为额外元素的示例。
我认为我使用 anyof 和 const 正确地做到了这一点。但是,当我使用 XMLSpy Pro 2020 进行测试时,它会生成无效的 json 示例,并且当我尝试验证无效示例时,它也会通过....所以,1) 我表达得很好吗?2)我做错了什么?3)有更好的方法吗?4) 是工具还是 json 模式?请帮忙。
XMLSpy 验证为正常的无效 JSON 示例:(它链接到我在信息页面中的架构)灯不应允许 6x4 作为函数...
另一个无效示例...椅子具有“分配的人员”并且显示了错误的类型值,但这也可以验证...
这是遵循 使用 anyof 查看枚举部分中的建议
也许我必须使用 if-then 构造?在这里,我尝试了 if-then 在 any-of 但我也得到了 json 的验证,它允许来自其他家具类型的枚举......
xml - Altova XMLSpy - 来自 tokenize() 函数的 Xpath “Unexpected 'atomic' item xs:string”错误
我正在使用 Altova XMLSpy,但在tokenize()
使用 Xpath 2.0 的 Xpath 函数时遇到问题。
我有一个包含此标记的 XML,其中包含我需要的值:
这是我用来检索我需要的值的 Xpath:
错误出现在tokenize()
函数的第三次使用中,并说:
意外的“原子”项 xs:字符串详细信息 XPTY0020:轴步骤中的上下文项必须是节点
此外,如果我使用固定字符串,像这样
错误不会发生。
问题是:为什么错误只发生在那里(而不是在 if 语句中,例如),我能做什么?