问题标签 [xsd-1.1]
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.
datetime - XSD 1.1 断言比较日期
我写了许多断言来比较 XSD 1.1 中的日期对,但它们都不起作用。
例子:
输入
XSD 1.1 断言:
和
阅读了 dateTime 和 timezone 表示后,我有点不知所措。
谁能告诉我:
- 错误在哪里(我希望很清楚我要比较的内容)?
- 是否有一组此类简单示例使其更易于理解?
xml - XSD 1.1 结构强制执行唯一 ID(如有必要)?
我是否需要 XSD 1.1 在具有如下文件/记录结构的单个 XML 文件中强制执行 ID 唯一性:
我还想允许某些重复的 ID,条件是它们与例如一个属性相结合,意思是“删除/停止使用这个版本的记录,用具有相同 ID 的其他记录替换这个(现在)弃用的重复”(在示例中,记录 1)。
这对于 XML 模式 1.0 是否可行,还是需要 XSD 1.1 断言(等等)?
需要什么样的通用 XML 实例结构才能使这个断言起作用?我知道 XSD 1.1 断言需要在密切相关的元素/属性上。
可能相关:
php - PHP 中的 XSD Schema 1.1 验证
我已经弄清楚如何使用此代码在 PHP 中使用 XSD 模式验证 XML 文件,但似乎处理是使用 XSD 1.0 版完成的。
就我而言,我需要将 XSD 文件视为 1.1 版。主要原因是我想使用:
注意maxOccurs="unbounded"
which 只能在<xs:all>
1.1 版本内部使用。在 1.0 版本中,maxOccurs
只能是 0 或 1。
PHP 失败并出现一般错误:
xml - XSD“版本”属性语义
XSD 规范https://www.w3.org/TR/xmlschema11-1/#declare-schema没有指定version
属性的语义:
其他属性 (
id
和version
) 是为了方便用户,本规范没有为它们定义语义。
W3C 版本控制指南https://www.w3.org/TR/xmlschema-guide2versioning/也没有。
是否应该使用该属性来指定 XML Schema 文档的版本(例如2.3.1
),或用于编写模式文档的 XSD 语言的版本(例如1.0
或),是否已达成共识1.1
?还是设计人员/开发人员仍然选择语义?
xml - Xerces-J XSD 1.1 验证与断言/替代的不受限制的 XPath 处理
使用XML 模式页面(在 Apache XML 项目网站上)指出:
在类型替代实现中,Xerces-J 首先尝试使用本地 Xerces“XPath 子集”解析器编译 XPath 表达式。如果使用本机 Xerces“XPath 子集”解析器解析失败,Xerces-J 会透明地切换到另一个支持所有 XPath 2.0 的处理器。Xerces-J 中的本机处理器是为提高效率而编写的,因此如果您的 XPath 表达式落在 XML Schema 1.1 规范定义的最小子集内,您可能会获得更好的性能。对于完整的 XPath 2.0 评估(对于 XSD 1.1 的“断言”,以及可选的“类型替代”),Xerces-J 使用 Eclipse/PsychoPath XPath 2.0 引擎。
本段暗示断言或替代的测试不必受限于 XSD 1.1 标准强加的 XPath 限制,只要可执行文件包含 PyschoPath XPath 处理器。
使用以下命令行:
$ export XERCESJ=$HOME/xerces-j/xerces-2_11_0-xml-schema-1.1-beta
$ java -classpath $XERCESJ/cupv10k-runtime.jar:$PSYCHOPATH/psychopath.jar:/usr/share/java/org.eclipse.wst.xml.xpath2.processor-2.1.100.jar:/usr/share/java/xercesImpl-xsd11-2.12-beta-r1667115.jar:$XERCESJ/xml-apis.jar:$XERCESJ/xercesSamples.jar jaxp.SourceValidator -xsd11 -i my_instance.xml
我在我的替代s' test s 中尝试了以下每个 XPath 表达式:
<alternative test="@value='4567'" ... />
<alternative test="../Sibling/@value='1234'" ... />
第一个(平凡)测试表达式成功,但第二个(非平凡)测试表达式失败:
c-cta-xpath: The XPath expression '../Sibling/@value='1234'' couldn't compile successfully in 'cta-subset' mode, during CTA evaluation.
此外,我相信我包含 PsychoPath XPath 处理器没有任何效果,因为无论我在classpath中包含还是删除 PsychoPath ,我都看到完全相同的行为。如果我只删除 Eclipse (WST) XPath 处理器,那么我会得到一个缺失类异常。
我看到了一个旧的 Apache 问题,它引用了必须显式启用的cta-full-xpath-checking功能,但上面的引用清楚地表明
... Xerces-J透明地[我的重点] 切换到另一个支持所有 XPath 2.0 的处理器。
我想要一个 XML Schema 1.1替代元素来对父元素的属性或兄弟元素的属性执行测试。对我的方法进行哪些修改将实现这一目标?
xml - 如何使用条件类型分配使类型取决于节点值
发现这个有趣的帖子:如何使用条件类型分配使类型取决于属性值
但是,条件类型分配可以依赖于节点值而不是属性吗?
我想做一个XSD,这样如果节点“type”的值为1,那么name和surname元素必须存在,当它是2时,name和id必须存在......
注意:我知道在这里使用属性会更好,但是我需要为无法更改的旧 XML 格式编写 XSD...
xml - XML Schema (XSD 1.1) 动态枚举取决于其他属性
我有一个相当简单的 XML 结构;
我想将“name”的值限制为一组特定的名称,具体取决于元素“person”的属性“type”的值。
因此,例如,如果<person type="NAME_WITH_A">
,只有名称
- 安娜
- 艾达
- 阿曼达
应该是有效的 , if <person type="NAME_WITH_B">
, only
- 伯塔,
- 鲍勃
- 布雷特
<name>
应该是元素的有效值。
根据这个问题,我创建了以下架构:
这对我来说真的不起作用。我有一种感觉,当我提到test="@type='NAME_WITH_A'"
另一个元素的@type 属性时,它总是错误的。
我也尝试过test="list / members / person / @type='NAME_WITH_A'"
,但没有成功。
java - XSD 1.1 断言中基于 XSD 属性值的正则表达式验证
我有这样的 XML 片段。我需要进行 XSD 验证,例如:如果字段属性“名称”是端口,那么它必须匹配正则表达式以确定它是否是数字(如“\p{Nd}+”)
在我的 XSD 中,我使用了如下所示的断言
但是,当我运行时,我得到以下异常抛出
xml - 使用 XSD 限制属性值和元素的值
我有一个要求,我需要使用 XSD 限制属性值及其元素的值。我已经能够将属性值限制为以下之一
到目前为止,但我还需要将元素值限制为以下之一
也是。
XML:
XSD:
有没有办法可以使用 XSD 来限制它们?