美好的一天!
我按如下方式生成了xml文件:
<object xmlns:el="elements_namespace" xmlns:vlprops="vl_props_namespace"
xmlns:vlsvc="vl_svc_params_namespace" xmlns:p="general_params_namespace">
<el:BTN vlprops:link="../clientdb/#abn/fl" vlprops:btnType="hist"
vlprops:linkInTab="true" p:nm_title="some_text"
p:vl_order="0" p:nm_service="null" p:pr_visible="true" p:nm_endpoint="null"
p:nm_logical_id="null" p:nm_description="null">
<vlprops:linkCols><![CDATA[[]]]></vlprops:linkCols>
<p:window_BTN />
</el:BTN>
<el:GRID vlprops:rows="15" p:nm_title="null" p:vl_order="3"
p:nm_service="some_text" p:pr_visible="true" p:nm_endpoint="CLDB"
p:nm_logical_id="some_text" p:nm_description="some_text">
<vlsvc:vars><![CDATA[["vl_params"]]]></vlsvc:vars>
<vlsvc:consts><![CDATA[{"in_function": "mdTotalTags"}]]></vlsvc:consts>
<p:columns_GRID>
<el:GRDCOL vlprops:rows="15" p:nm_title="null" p:vl_order="0"
p:nm_service="null" p:pr_visible="true" p:nm_endpoint="null"
p:nm_logical_id="null" p:nm_description="some_text">
<vlprops:linkCols><![CDATA[["id_client"]]]></vlprops:linkCols>
</el:GRDCOL>
<el:GRDCOL vlprops:rows="15" p:nm_title="some_text"
p:vl_order="1" p:nm_service="null" p:pr_visible="true"
p:nm_endpoint="null" p:nm_logical_id="null" p:nm_description="null"></el:GRDCOL>
<el:GRDCOL vlprops:rows="15" p:nm_title="some_text" p:vl_order="2"
p:nm_service="null" p:pr_visible="true" p:nm_endpoint="null"
p:nm_logical_id="null" p:nm_description="null"></el:GRDCOL>
<el:GRDCOL vlprops:rows="15" p:nm_title="some_text"
p:vl_order="3" p:nm_service="null" p:pr_visible="true"
p:nm_endpoint="null" p:nm_logical_id="null" p:nm_description="null"></el:GRDCOL>
<el:GRDCOL vlprops:rows="15" p:nm_title="some_text" p:vl_order="4"
p:nm_service="null" p:pr_visible="true" p:nm_endpoint="null"
p:nm_logical_id="null" p:nm_description="null"></el:GRDCOL>
<el:GRDCOL vlprops:rows="15" p:nm_title="some_text" p:vl_order="5"
p:nm_service="null" p:pr_visible="true" p:nm_endpoint="null"
p:nm_logical_id="null" p:nm_description="null"></el:GRDCOL>
<el:GRDCOL vlprops:rows="15" p:nm_title="some_text"
p:vl_order="6" p:nm_service="null" p:pr_visible="true"
p:nm_endpoint="null" p:nm_logical_id="null" p:nm_description="null"></el:GRDCOL>
<el:GRDCOL vlprops:rows="15" p:nm_title="some_text почта"
p:vl_order="7" p:nm_service="null" p:pr_visible="true"
p:nm_endpoint="null" p:nm_logical_id="null" p:nm_description="null"></el:GRDCOL>
<el:GRDCOL vlprops:rows="15" p:nm_title="some_text" p:vl_order="8"
p:nm_service="null" p:pr_visible="true" p:nm_endpoint="null"
p:nm_logical_id="null" p:nm_description="null"></el:GRDCOL>
</p:columns_GRID>
<p:footDetail_GRID />
<p:rowDetail_GRID />
</el:GRID>
</object>
现在我需要生成XSD方案,我在网上搜索了一些信息,遇到了一些例子。他们都只有一个命名空间。喜欢
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.my.com/book"
elementFormDefault="qualified">
<xs:element name="book">
<xs:complexType>
<xs:attribute name="author" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>
它只包含xs:namespace,我想知道我是否可以创建一个xsd文件来包含我xml中的所有命名空间
(
el="elements_namespace"
xmlns:vlprops="vl_props_namespace"
xmlns:vlsvc="vl_svc_params_namespace"
xmlns:p="general_params_namespace"
)
如果有可能,你可以给我一些我的xml示例吗?提前谢谢
答案 0 :(得分:0)
XML Schema通常为每个命名空间安排一个模式,但模式可以相互导入。
例如,对于根元素,可以定义没有目标名称空间的第一个模式,从而导入el
模式。然后,它可以引用el
模式中定义的具有ref
属性的元素。
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:el="elements_namespace">
<xs:import namespace="elements_namespace" schemaLocation="el.xsd"/>
<xs:element name="object">
<xs:complexType>
<xs:sequence>
<xs:element ref="el:BTN"/>
<xs:element ref="el:GRID"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
导入和引用元素和属性的相同机制可以在所有模式中重用,除了其他模式将具有目标名称空间。
有一点通常会引起混淆:
name
属性具有本地名称,没有前缀,因为要在模式的目标命名空间中声明的元素(为此,请确保elementFormDefault
是qualified
,除非没有目标命名空间的条目架构。ref
属性必须包含QNames,前缀为。因此,您需要相应地绑定前缀,如上所述。最后,建议对名称空间使用URI。 XML Names规范要求这样做,即使在实践中,许多处理器实际上将它们视为字符串并且不会抱怨。