首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写XSD来验证转义的xml数据模式

如何编写XSD来验证转义的xml数据模式
EN

Stack Overflow用户
提问于 2012-05-29 02:39:10
回答 2查看 2.2K关注 0票数 0

我在下面得到了一个特定的xml数据

代码语言:javascript
复制
<l7:ApiPlans xmlns:l7="http://ns.xcompany.com/2012/04/api-management">
  <l7:ApiPlan>
<l7:PlanPolicy>

&lt;wsp:Policy xmlns:L7p="http://www.xcompany.com/ws/policy" xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy"&gt;
&lt;wsp:All wsp:Usage="Required"&gt;
    &lt;wsp:All wsp:Usage="Required"&gt;
          ...... some other welformed xml
&lt;/wsp:All&gt;
    &lt;/wsp:All&gt;
&lt;/wsp:Policy&gt;
    </l7:PlanPolicy>
  </l7:ApiPlan>
</l7:ApiPlans>

我需要编写一个XSD (如果可能)来验证PlanPolicy开头

代码语言:javascript
复制
&lt;wsp:Policy xmlns:L7p="http://www.xcompany.com/ws/policy"     
xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy"&gt;
&lt;wsp:All wsp:Usage="Required"&gt;
    &lt;wsp:All wsp:Usage="Required"&gt;

并以

代码语言:javascript
复制
 &lt;/wsp:All&gt;
        &lt;/wsp:All&gt;
    &lt;/wsp:Policy&gt;

到目前为止,我得到了这个,

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://ns.xcompany.com/2012/04/api-management" xmlns:l7="http://ns.xcompany.com/2012/04/api-management">
<xs:element name="ApiPlans">
    <xs:complexType>
        <xs:sequence>
            <xs:element maxOccurs="unbounded" ref="l7:ApiPlan"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
<xs:element name="ApiPlan">
    <xs:complexType>
        <xs:sequence>               
            <xs:element ref="l7:PlanPolicy"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
<xs:element name="PlanPolicy" type="policyDataType"/>
<simpleType name="policyDataType">
    <restriction base="xs:string">
         <minLength value="1"></minLength>
        <pattern value="(&lt;).*(&gt;).*(&lt;).*(&gt;)"></pattern>
    </restriction>
</simpleType>
</xs:schema>

这有可能吗?作为一个次要问题,您如何在模式中定义:换行符(CR/LF)、制表符和引号。

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-29 03:30:20

是的,这绝对是可能的,对于这个非典型的任务,正则表达式大约是您唯一的选择。请注意,转义的内容不会作为XML处理,而是作为字符串处理。

请务必阅读如何在正则表达式中正确地escape various special characters,包括圆括号。

换行符和制表符分别由\n\tm表示。

可以通过加倍来输入报价。

票数 -1
EN

Stack Overflow用户

发布于 2012-05-29 05:52:32

我不会尝试这样做的。

好吧,如果有一半的选择,我无论如何都不会在XML中使用转义XML - XML被设计为嵌套而不转义,转义它只会使每个人的生活变得更加困难。

但是,如果您不得不像这样接受它,那么在提取和解析它之后,我将单独验证内部XML。没有必要在一次验证过程中做所有的事情。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10789076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档