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

标签 java xml regex xsd xsd-validation

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

<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 是否以

开头
&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;

并以

结尾
 &lt;/wsp:All&gt;
        &lt;/wsp:All&gt;
    &lt;/wsp:Policy&gt;

到目前为止我已经有了这个,

<?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)、制表符和引号。

提前致谢

最佳答案

我不会尝试这样做。

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

但是如果您必须像这样忍受它,我会在提取并解析它之后单独验证内部 XML。无需在一次验证过程中完成所有操作。

关于java - 如何编写 XSD 来验证转义的 xml 数据模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10789076/

相关文章:

java - 使用 Java 访问深层 XML 结构

java - IntelliJ 中的正则表达式反向引用

java - 使用Java在mongodb中组合批量插入和保存?有没有一种方法可以让我们实现呢?

java - 大字符串中的子字符串搜索算法

java - Netbeans API : How to save a file, 或当前项目中的所有文件?

java - 如何在jtextbox上实时验证正则表达式?

javascript - 正则表达式查找包含这些字母的单词

java - ZipOutputStream + FTPClient 中的错误

java - XSLT 参数不起作用

java - 将 XML 文本节点替换为元素节点