Http 流式XML Mime类型?
我正在构建一个能够发出流式XML的web服务。因此,输出(在高级别上)将如下所示:Http 流式XML Mime类型?,http,mime-types,Http,Mime Types,我正在构建一个能够发出流式XML的web服务。因此,输出(在高级别上)将如下所示: <fragment1> <!-- ... --> </fragment1> <fragment2> <!-- ... --> </fragment2> ……等等。对于普通XML文档,可以使用以下任何一种不同的MIME类型: 应用程序/xml application/vnd.mycompany.com.descript
<fragment1>
<!-- ... -->
</fragment1>
<fragment2>
<!-- ... -->
</fragment2>
……等等。对于普通XML文档,可以使用以下任何一种不同的MIME类型:
- 应用程序/xml
- application/vnd.mycompany.com.description+xml(per)
- 文本/xml
application/octet流
application/vnd.mycompany.com.description.streaming+xml
application/vnd.mycompany.com.description+流式xml
编辑:为了给这个问题增添一点味道,并提供一个我试图模拟的工作实现的示例,这个API是仿效的。听起来除了您的流媒体需求之外,您的内容实际上是一个包含多个
应用程序/xml
部分的应用程序。通过这种布局,application/json
部分也可以混合在消息中
如果您的单个XML片段是较大文档的一部分,请查看(有点陈旧和保守)。它定义了一种很好的语法,可以将片段正文与原始文档的上下文信息包装在一起。听起来,除了流式处理要求之外,您的内容实际上是一个包含多个
应用程序/xml
部分的文档。通过这种布局,application/json
部分也可以混合在消息中
如果您的单个XML片段是较大文档的一部分,请查看(有点陈旧和保守)。它定义了一种很好的语法,可以将片段正文与原始文档的上下文信息包装在一起。根据数据中的语义关系及其结构,有多个选项 第一个选项:如果您有一个(连续的)文件,可以通过将其包装在
..
标记中轻松转换为有效的XML文档,那么它应该是应用程序/XML外部解析实体
。这可以是从简单文本到注释、处理指令或复杂元素列表的任何内容。但是,不能插入XML声明(必须通过MIME定义字符集)或任何DTD(因此,如果依赖DTD,则含义必须由随附文档提供,并且也不能包含任何其他外部解析实体,除非使用XInclude)
我发现这适用于任何可以描述为任意XML内容/片段的内容。它主要是通过DTD中的外部解析实体来使用的,但它本身也可以很好地工作。如果片段可能没有单个根节点,请使用此选项。然而,我可以想到一个警告:如果流是无限的,客户端最终将不得不在某个地方终止它,并且因为没有指定外部边界,所以它可以终止于元素的中间,使其根据其模式无效。
您也可以使用application/xml
并自己编写开始标记,但是如果将某些解析器配置为整体处理文档,则它们可能会等待文档结束。使用application/xml外部解析实体
,最好将其解析为单个xml节点流
第二个选项:存在多部分类型的范围。通过这种方式,您可以包装单个XML文档(application/XML
或specific)或片段(application/XML外部解析实体
)。同样,内部类型的选择取决于单个消息是否可以被视为独立的XML文档(例如,“svg视频”的application/svg+XML
)
子类型的选择取决于整个序列的预期含义。分组的单个独立文件流可以使用多部分/混合
(这是最通用的类型)。如果XML数据以某种方式互连,则可以使用multipart/related
并为各个片段分配标识符。最后,如果只有消息的最后一部分表示资源的最新内容(用于保存单个请求),则使用multipart/x-mixed-replace
举例说明:
- 如果响应是一个富含XHTML标记的文本流(例如,从标记流转换而来),那么它应该是单个
应用程序/xml外部解析实体
- 如果片段是附件,即不断从网站下载或由用户上传的文件,则应该是
多部分/混合的
- 如果片段是大型或不断增长的资源图(不仅仅是XML)中的节点,则应使用
multipart/related
- 如果结果是短期信息,如某个过程的当前状态或某个对象的连续测量,则应为
multipart/x-mixed-replace
根据数据中的语义关系及其结构,有多种选择
第一个选项:如果您有一个(连续的)文件,可以通过将其包装在
..
标记中轻松转换为有效的XML文档,那么它应该是应用程序/XML外部文件