首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定义允许base64内容或xop:Include元素的XML元素?

如何定义允许base64内容或xop:Include元素的XML元素?
EN

Stack Overflow用户
提问于 2014-01-03 17:42:31
回答 3查看 2K关注 0票数 4

我有一个XML,它定义了一个元素,可以是base64文本,也可以是xop:Include元素。目前,这被定义为一个base64Binary类型:

代码语言:javascript
复制
<xs:element name="PackageBinary" type="xs:base64Binary" minOccurs="1" maxOccurs="1"/>

当我插入xop:Include元素时,它看起来如下所示:

代码语言:javascript
复制
<PackageBinary>
    <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="http://google.com/data.bin" />
</PackageBinary>

但是这会产生一个XML验证错误(我使用的是.NET验证器):

元素‘mds:xml-schema:soap11 11:PackageBinary’不能包含子元素'http://www.w3.org/2004/08/xop/include:Include‘,因为父元素的内容模型仅为文本。

这是合理的,因为它不是base64内容,但我认为这是常见的做法.?是否有任何方法在架构中支持这一点?(我们有支持这种语法的现有产品,但我们现在正在添加验证。)

EN

回答 3

Stack Overflow用户

发布于 2014-01-09 17:06:33

我能想到的最好的方法是创建一个复杂的类型,它允许任何标记,但也被标记为“混合”,因此它允许文本。这并不会显式地将内容声明为base64,但它确实让它通过了验证。

代码语言:javascript
复制
<xs:complexType name="PackageBinaryInner" mixed="true">
  <xs:sequence>
    <xs:any minOccurs="0" maxOccurs="1"/>
  </xs:sequence>
</xs:complexType>
<xs:element name="PackageBinary" type="PackageBinaryInner" minOccurs="1" maxOccurs="1"/>
票数 1
EN

Stack Overflow用户

发布于 2014-05-13 10:02:39

我找到的解决办法如下:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://example.org"
           elementFormDefault="qualified"
           xmlns="http://example.org" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           xmlns:xop="http://www.w3.org/2004/08/xop/include">

<xs:import namespace="http://www.w3.org/2004/08/xop/include"
           schemaLocation="http://www.w3.org/2004/08/xop/include"/>

<xs:complexType name="PackageBinary" mixed="true">
  <xs:all>
    <xs:element ref="xop:Include"/>
  </xs:all>
</xs:complexType>
票数 1
EN

Stack Overflow用户

发布于 2016-04-06 13:43:03

我在一个似乎允许验证的xml文档中看到了这一点--基本上是属性xmlns:xop=“.”做了个小把戏:

代码语言:javascript
复制
<SomeElement xmlns:xop="http://www.w3.org/2004/08/xop/include/" id="465390" type="html">
<SomeElementSummaryURL>https://file.someurl.com/SomeImage.html</SomeElementSummaryURL>
<xop:Include href="cid:1111111@someurl.com"/>
</SomeElement >
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20909580

复制
相关文章

相似问题

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