- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有一个场景,我需要一个 xsd,用于验证一些没有共同点的 xml。例如,
xml1:
<myXml1>
<myTag>
<someTag>..</someTag>
<requiredTag>..</requiredTag>
<someotherTag>..</someotherTag>
</myTag>
<myXml1>
xml2:
<myXml1>
<myTag>
<requiredTag>..</requiredTag>
<otherTag>..</otherTag>
</myTag>
<myXml1>
我需要一个通用的 xsd,以便验证具有“requiredTag
”的两个 xml 的共同点并读取其值。
我尝试使用 <xs:any>
但它仅在 xs:sequence
中受支持而不是 xs:all
.我的requiredTag
可以在 myTag
下的任何位置.
我想使用这个 xsd 创建使用 jaxb 的类来读取值。
感谢任何帮助。
提前致谢。 :)
最佳答案
如果您可以使用 XSD 1.1 进行验证,则可以使用:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" vc:minVersion="1.1">
<xs:complexType name="myTagType">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
<xs:element name="requiredTag" type="xs:string"/>
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xs:sequence>
</xs:complexType>
...
</xs:schema>
不幸的是,这在 XSD 1.0 中失败了,因为它违反了 Unique Particle Atribution约束条件。
一种解决方法是对 any
元素和 requiredTag
使用不同的命名空间。为所需标记声明一个带有命名空间的架构:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
xmlns="required-tag-ns"
targetNamespace="required-tag-ns">
<xs:element name="requiredTag" type="xs:string"/>
</xs:schema>
现在将其导入到您的架构中(您需要为其中一个架构添加前缀):
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="any-tag-ns"
xmlns="any-tag-ns"
xmlns:r="required-tag-ns">
<xs:import namespace="required-tag-ns" schemaLocation="required.xsd"/>
<xs:complexType name="myTagType">
<xs:sequence>
<xs:any namespace="any-tag-ns" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
<xs:element ref="r:requiredTag"/> <!-- now it works in 1.0 because the ambiguity was removed -->
<xs:any namespace="any-tag-ns" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xs:sequence>
</xs:complexType>
...
</xs:schema>
上面的 XSD 1.1 架构或 XSD 1.0 架构将验证这些情况:
<myTag>
<requiredTag>..</requiredTag>
</myTag>
<myTag>
<someTag>..</someTag>
<requiredTag>..</requiredTag>
</myTag>
<myTag>
<requiredTag>..</requiredTag>
<someotherTag>..</someotherTag>
</myTag>
<myTag>
<someTag>..</someTag>
<someotherTag>..</someotherTag>
<someotherTag>..</someotherTag>
<requiredTag>..</requiredTag>
<someotherTag>..</someotherTag>
</myTag>
<myTag>
<someTag>..</someTag>
<requiredTag>..</requiredTag>
<someTag>..</someTag>
<someTag>..</someTag>
<someotherTag>..</someotherTag>
</myTag>
但他们不会验证这些情况:
<myTag> <!-- missing requiredTag -->
<someTag>..</someTag>
<someotherTag>..</someotherTag>
</myTag>
<myTag> <!-- too many requiredTags -->
<requiredTag>..</requiredTag>
<requiredTag>..</requiredTag>
<someotherTag>..</someotherTag>
</myTag>
在 XSD 1.1 版本中,您将不需要命名空间。在 XSD 1.0 解决方案中,您的实例必须使用其命名空间来限定 requiredTag
:
<myXml xmlns="any-tag-ns"
xmlns:r="required-tag-ns"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="any-tag-ns your-schema-file.xsd">
<myTag>
<someTag>..</someTag>
<someotherTag>..</someotherTag>
<someotherTag>..</someotherTag>
<r:requiredTag>..</r:requiredTag>
<someotherTag>..</someotherTag>
</myTag>
...
</myXml>
关于java - xs :any in xs:all tag for xsd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22477106/
我们与一位客户存在某种问题,该客户认为我们发送的 XML 文件中的两个版本的空标记之间存在语义差异(纯 XML 没有 HTML ..)。 他们期望: 我们发送: 我
我想计算文本中 pp/np/vp 的数量,但我不知道如何在 openNLP chunker 中识别 PP-tags/NP-tags/VP-tags?我已经尝试过这段代码,但它不起作用。 Chunker
从我正在阅读的代码的上下文来看,它看起来像 $("")创建一个标签,其中 $('')是一个搜索标签的选择器。这里发生了什么?实际上,我可能没有掌握第二个语法,但我确信我已经完成了 $('idName'
我正在使用 Builder::XmlMarkup 创建 xml。我想创建一个没有内容的标签,因为 api 强制我创建它。如果我使用博客 xml.tag do end 我得到了我想要的 但我希望它更短
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Using the XHTML closing slash (/) on normal tags? Are
默认情况下, someXmlWriter.WriteElementString("my-tag", someString); 产生 我环顾四周XmlWriterSettings强制作者生成 的可能选
如何修改tag-it ui插件https://github.com/aehlke/tag-it (版本 v2.0)因此它只允许选择 x 个标签,以及如何仅允许“availableTags-option
我能够解析这样的内容: value 通过: File inputFile = new File("input.xml"); DocumentBuilderFactory dbFactory = Doc
我不太确定如何编写这个查询,它可以在一个查询中完成。案例如下: 我需要选择标签名称列表,并为每个标签获取最近标记的专辑信息。这意味着,如果用户创建名为“Pamela Anderson”的专辑并将该专辑
这个问题在这里已经有了答案: Where should I put tags in HTML markup? (21 个回答) JavaScript at bottom/top of web pa
Django 2 by Example 中的教程,我不明白: step (2): Why is `Count('tags')` **not** counting the total number of
我是 jekyll 的新手,正在构建我的网站。 我有一个“帖子”布局,我希望与帖子相关的所有标签都出现在左栏中。我遇到的问题是,使用 {{ page.tags }} 会返回一个未以逗号分隔且看起来很乱
如何将一个目录下的所有hash tag重写为slash tag? ( Apache ) http://www.domain.com/company/index#about => http://www.
在查询 Flickr API 并检查返回的标签时,我注意到我收到了未在 Web 界面上显示的其他标签。例如对于此图像: http://www.flickr.com/photos/77060598@N0
我有类似 的东西我想得到这个: <1> <2> 但我只想在 中应用它标签而不是其他任何地方。 我已经有了这个: $txt = $this->input->post('
我想删除 xxx yyyy zzz 用 php。但是,首先,我想控制字符串是否以 开头并以 结尾 是否有用于此目的的函数? if(string begins with '' and ends wi
在我的模板中加载自定义标签时出现此错误。我访问了许多关于此的主题,并且确保确认我没有犯一些常见错误: 包含标签的文件在 templatetags 中文件夹。 此 templatetags文件夹包含 _
API doc中没有关于构造函数的文档。我想了解SvgElement.tag()的用途/用例。 最佳答案 SvgElement.tag(String tag)构造函数为对应的SvgElement值创建
$('*').data('tag', "tagged"); $('li[tag=tagged]').length 返回零... 最佳答案 $('*').data('tag', "tagged"); $
下面的代码出错了。我该如何解决这个问题? {% block header %} {% endblock %} 错误输出: TemplateSyntaxError : Invalid bloc
我是一名优秀的程序员,十分优秀!