gpt4 book ai didi

java - 在 Java 中从 XSD 创建 Xpath

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:52:55 25 4
gpt4 key购买 nike

我正在使用 Apache XMLSchema 框架来解析和获取 XSD 的元素。现在我需要将一个 XPath 字符串与每个元素相关联。有人可以就我该怎么做提出任何想法吗?有任何现有的算法或框架吗?

例子:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:simpleType name="stringtype">
<xs:restriction base="xs:string"/>
</xs:simpleType>

<xs:simpleType name="inttype">
<xs:restriction base="xs:positiveInteger"/>
</xs:simpleType>

<xs:simpleType name="dectype">
<xs:restriction base="xs:decimal"/>
</xs:simpleType>

<xs:simpleType name="orderidtype">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{6}"/>
</xs:restriction>
</xs:simpleType>

<xs:complexType name="shiptotype">
<xs:sequence>
<xs:element name="name" type="stringtype"/>
<xs:element name="address" type="stringtype"/>
<xs:element name="city" type="stringtype"/>
<xs:element name="country" type="stringtype"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="itemtype">
<xs:sequence>
<xs:element name="title" type="stringtype"/>
<xs:element name="note" type="stringtype" minOccurs="0"/>
<xs:element name="quantity" type="inttype"/>
<xs:element name="price" type="dectype"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="shipordertype">
<xs:sequence>
<xs:element name="orderperson" type="stringtype"/>
<xs:element name="shipto" type="shiptotype"/>
<xs:element name="item" maxOccurs="unbounded" type="itemtype"/>
</xs:sequence>
<xs:attribute name="orderid" type="orderidtype" use="required"/>
</xs:complexType>

<xs:element name="shiporder" type="shipordertype"/>

</xs:schema>

XPath 用于

orderperson-> ./orderperson
name-> ./shipto/name

etc

最佳答案

如果模式允许递归结构,或者如果它包含通配符,那么这是一个非常棘手的问题,您需要更精确地指定您的要求。对于相对简单的非递归模式,它应该更直接,尽管您需要提供额外的信息,例如根元素名称是什么。

关于java - 在 Java 中从 XSD 创建 Xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9564987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com