- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个针对XML模式有效的XML文档。 XML模式具有组元素(xs:group)。这些组由其他定义的元素组成。如何编写一个XPath表达式,该表达式将为我提供指定组的所有成员?
有任何想法吗?
@Steve:
假设我的xml模式已定义了4个元素(elem1,elem2,elem3,elem4)。另外,将两个组定义如下:
group1: (elem1 | elem2 | elem3)
group2: (elem1 | elem4)
<elem1/>
<elem2/>
<elem3/>
<elem4/>
<elem2/>
<elem1/>
<elem3/>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element ref="elem0"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="A1"/>
<xs:group ref="A2"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="elem0" type="xs:string"/>
<xs:group name="A1">
<xs:choice>
<xs:element ref="elem10"/>
<xs:element ref="elem11"/>
</xs:choice>
</xs:group>
<xs:element name="elem10" type="xs:string"/>
<xs:element name="elem11" type="xs:string"/>
<xs:group name="A2">
<xs:choice>
<xs:element ref="elem20"/>
<xs:element ref="elem21"/>
<xs:element ref="elem22"/>
<xs:element ref="elem23"/>
</xs:choice>
</xs:group>
<xs:group name="CE">
<xs:choice>
<xs:element ref="elem30"/>
<xs:element ref="elem31"/>
<xs:element ref="elem32"/>
</xs:choice>
</xs:group>
<xs:group name="E">
<xs:choice>
<xs:element ref="elem30"/>
<xs:element ref="elem40"/>
</xs:choice>
</xs:group>
<xs:element name="elem20">
<xs:complexType>
<xs:sequence>
<xs:group minOccurs="2" maxOccurs="unbounded" ref="CE"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="elem21">
<xs:complexType>
<xs:sequence>
<xs:group minOccurs="2" maxOccurs="2" ref="CE"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="elem22">
<xs:complexType>
<xs:sequence>
<xs:element ref="elem40"/>
<xs:group ref="CE"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="elem23">
<xs:complexType>
<xs:sequence>
<xs:element ref="elem40"/>
<xs:element ref="elem40"/>
</xs:sequence>
<!-- <xs:attribute name="prop" use="required" type="xs:NMTOKEN"/> -->
</xs:complexType>
</xs:element>
<xs:element name="elem31">
<xs:complexType>
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="CE"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="elem32">
<xs:complexType>
<xs:sequence>
<xs:group ref="CE"/>
</xs:sequence>
<!-- <xs:attribute name="prop" use="required"/> -->
</xs:complexType>
</xs:element>
<xs:element name="elem30">
<xs:complexType>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="elem40">
<xs:complexType>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
最佳答案
好的...我认为我们需要在您的示例中澄清一些事情-因为尽管它们看起来像是小问题,但实际上并非如此-并且,如果您遵循规则,那应该是直截了当的-前进如何构造XPath表达式(我将展示有关如何构造基本XPath表达式的示例,其中将有效模式考虑到组的基础上,然后是您的示例所遇到的问题)。
让我们逐步进行。
序列组
首先,假设您有一个如下所示的架构:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:group ref="group1"/>
<xs:group ref="group2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:group name="group1">
<xs:sequence>
<xs:element name="elem1"/>
<xs:element name="elem2"/>
<xs:element name="elem3"/>
</xs:sequence>
</xs:group>
<xs:group name="group2">
<xs:sequence>
<xs:element name="elem1"/>
<xs:element name="elem2"/>
</xs:sequence>
</xs:group>
</xs:schema>
group1
序列,后跟
group2
都是元素序列。
minoccurs='0'
元素上没有任何
group
属性-仍然是无效的,正如我将在后面解释的那样),选择必需的元素很简单。
group1
的所有元素,我们可以简单地使用以下XPath:
/root/(elem1[1]|elem2[1]|elem3)
<root>
<elem1 />
<elem2 />
<elem3 />
<elem1 />
<elem2 />
</root>
elem1
,第一个
elem2
和
elem3
。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:group ref="group1"/>
<xs:group ref="group2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:group name="group1">
<xs:choice>
<xs:element name="elem1"/>
<xs:element name="elem2"/>
<xs:element name="elem3"/>
</xs:choice>
</xs:group>
<xs:group name="group2">
<xs:choice>
<xs:element name="elem1"/>
<xs:element name="elem2"/>
</xs:choice>
</xs:group>
</xs:schema>
group1
,第二个元素属于
group2
,如下所示:
<root>
<elem2 />
<elem1 />
</root>
group1
XPath更加简单:
/root/*[1]
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:group ref="group1" maxOccurs="unbounded"/>
<xs:group ref="group2" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:group name="group1">
<xs:choice>
<xs:element name="elem1"/>
<xs:element name="elem2"/>
<xs:element name="elem3"/>
</xs:choice>
</xs:group>
<xs:group name="group2">
<xs:choice>
<xs:element name="elem1"/>
<xs:element name="elem2"/>
</xs:choice>
</xs:group>
</xs:schema>
maxOccurs="unbounded"
属性)。这类似于您的示例,其中显示了一组中出现的多个元素)。
<root>
<elem2 />
<elem1 />
<elem1 />
<elem2 />
</root>
group1
,
group1
,
group1
,
group1
group1
,
group1
,
group1
,
group2
group1
,
group1
,
group2
,
group1
group1
,
group2
,
group1
,
group1
/root/(elementName1|elementName2|elementName3)
root
下名称为
elementName1
或
elementName2
或
elementName3
的所有元素。
(elem1|elem2|elem3)
就可以了。
关于xml - 如何在xpath中选择属于同一组的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7814893/
如果有一张有客户的 table 和一张有地址的 table 。 一位客户必须(仅)有一个地址,但地址不必有客户(取决于字段类型)。所以我只是问如何告诉cake在寻找客户时获取客户地址,但在寻找地址时不
我有一个问题,我需要获取我的画廊表的所有图像(路径),该表拥有博物馆和拥有博物馆的用户。我得到了图像的路径,但这些与拥有博物馆的 user_id 没有关联。 所以简短的描述: 每个用户拥有一个博物馆,
我有一个问题,我需要获取我的画廊表的所有图像(路径),该表拥有博物馆和拥有博物馆的用户。我得到了图像的路径,但这些与拥有博物馆的 user_id 没有关联。 所以简短的描述: 每个用户拥有一个博物馆,
我有用户和个人资料(一对一属于用户) type User struct { ID int Username string Password string
我想以类似于'belongs to' association的方式使用GORM的Django's one-to-one relationships。考虑以下示例,其中每个User与一个Profile相
长期从事 Rails 开发, Backbone 菜鸟。 在我的 Rails 模型中,一个项目有很多任务,一个任务属于一个项目......标准的东西。 尝试在集合中获取项目的任务 json。 Examp
让我们直奔问题(使用 Grails 1.1.1,它应该适用于以前的问题) 我有 2 个域,即:用户和详细信息,如下所示: Class User { String userName ; ..
我正在尝试在 Rails 中设置模型关系,并且需要您的帮助,因为它不起作用:0 class User :creator_id end 就架构而言,request_threads表具有creator_
注意:我在编写问题时解决了问题,因此不需要答案。仍然与答案分享,以便有相同经历的人可以从中受益。 我有一个回收器 View ,其中包含图像和 2 个 TextView 。我想在单击图像时旋转图像,但发
我正在尝试为我的应用程序中的所有按钮添加自定义点击声音。我已经为 UIButton 创建了一个类类别,其中包含以下代码: NSURL *soundURL = [NSURL fileURLWithPat
我有这样一个IP:12.12.12.12 我正在遍历不同的 IP 范围(12.12.12.0/24(示例))格式,并尝试查看 IP 是否在该范围内。 我尝试了各种方法,例如 inet_addr 和比较
看完这个问题 ASP.NET MVC: Nesting ViewModels within each other, antipattern or no? 和 Derick Bailey 的评论 i t
我正在使用 FeedWordPress 从子公司网页将新闻导入母公司的新闻卷。 可在此处查看特定项目的 RSS 摘录:Pastebin 如您所见,我正在将我需要的图像放入 RSS 文件、描述 bloc
假设我有以下数据库架构: dogs 和 owners 与经典的 belongsToMany 相关联。 walks 表怎么样?我希望能够在这种关系中使用 Eloquent 好东西: $dogs = Do
我不知道出了什么问题,但我无法使用 :class_name 选项让belongs_to 工作。有人可以启发我。非常感谢! 这是我的代码片段。 class CreateUsers false
属于 JavaScript 对象原型(prototype)的回调函数如何访问对象成员?回调不能关闭,一切都必须定义如下: function Obji(param){ this.element =
有人可以解释一下 MarkupCompilePass1 和 PartialClassGenerationTask 这两个构建任务是如何归属在一起的吗?目前我不知道他们是否共存或者是否需要对方。有人可以
现在,我尝试了解 Grails 域类和 GORM 中的工作原理。所以,我尝试实验: 我试验了两个域类:Main 和 Sub。 我们走吧! 第 1 步: class Main { String
所以我有一个模型 App.DailyEntry = DS.Model.extend({ user_id: belongsTo('user'), entries: hasMany('En
我正在使用 primeng 组件选项卡菜单。 https://www.primefaces.org/primeng/#/tabmenu我找不到将所选 TAB 的颜色更改为不同颜色的方法。 最佳答案 抱
我是一名优秀的程序员,十分优秀!