Java jax-ws目录文件:PUBLIC和SYSTEM条目之间的区别

问题描述 投票:1回答:1

有人可以解释以下TR9401目录格式(我与Java jax-ws工具,例如xjcwsimport等一起使用)中SYSTEM和PUBLIC条目之间的区别)相同的概念(SYSTEM和PUBLIC )也以其他XML目录格式出现。

换句话说,我将目录文件视为一个映射:名称空间(键)到位置(值)。该映射中的键值对为“ SYSTEM”而不是“ PUBLIC”是什么意思?

SYSTEM "http://www.w3.org/2001/xml.xsd" "xml.xsd"
SYSTEM "http://www.ivoa.net/xml/STC/STCregion/v1.10" "STCregion-v1.10.xsd"
PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd"
PUBLIC "http://www.ivoa.net/xml/STC/STCcoords/v1.10" "STCcoords-v1.10-mod.xsd"

我做了一些实验,发现我可以将某些条目从PUBLIC更改为SYSTEM,并且仍然可以使用,而其他行的相同更改会破坏构建。

java jax-ws xjc wsimport
1个回答
0
投票

我认为它来自SGML / DTD,其中每个文档类型都可以具有PUBLIC-IDSYSTEM-ID。前者只是一个字符序列(例如-//W3C//DTD HTML 4.01//EN),后者是文件名或URL

在XML中,xmlns或多或少是public-id,而schemaLocation可以看作是系统ID。

[我刚刚在计算机上找到的示例:有一个/usr/share/xml/schema/xml-core/tr9401.dtd文件,它具有公共ID -//GlobalTransCorp//DTD XML Catalogs V1.0-Based Extension V1.0//EN和系统ID http://globaltranscorp.org/oasis/catalog/xml/tr9401.dtd

现在catalog.xml文件包含以下几行:

<public publicId="-//GlobalTransCorp//DTD XML Catalogs V1.0-Based Extension V1.0//EN" uri="tr9401.dtd"/>
<system systemId="http://globaltranscorp.org/oasis/catalog/xml/tr9401.dtd" uri="tr9401.dtd"/>

首先将public-id解析为实际的本地文件;第二个将system-id解析为实际的本地文件。

© www.soinside.com 2019 - 2024. All rights reserved.