- java.lang.Object
-
- javax.xml.catalog.CatalogFeatures
-
public class CatalogFeaturesextends Object
CatalogFeatures包含一组功能和属性。 Catalog Features Feature Description Property Name System Property [1] jaxp.properties [1] Value [2] Action Type Value FILES A semicolon-delimited list of URIs to locate the catalog files. The URIs must be absolute and have a URL protocol handler for the URI scheme. javax.xml.catalog.files javax.xml.catalog.files javax.xml.catalog.files String URIs Reads the first catalog as the current catalog; Loads others if no match is found in the current catalog including delegate catalogs if any. PREFER Indicates the preference between the public and system identifiers. The default value is public [3]. javax.xml.catalog.prefer N/A N/A Stringsystem
Searches system entries for a match; Searches public entries when external identifier specifies only a public identifierpublic
Searches system entries for a match; Searches public entries when there is no matching system entry. DEFER Indicates that the alternative catalogs including those specified in delegate entries or nextCatalog are not read until they are needed. The default value is true. javax.xml.catalog.defer [4] javax.xml.catalog.defer javax.xml.catalog.defer Stringtrue
Loads alternative catalogs as needed.false
Loads all catalogs[5]. RESOLVE Determines the action if there is no matching entry found after all of the specified catalogs are exhausted. The default is strict. javax.xml.catalog.resolve [4] javax.xml.catalog.resolve javax.xml.catalog.resolve Stringstrict
Throws CatalogException if there is no match.continue
Allows the XML parser to continue as if there is no match.ignore
Tells the XML parser to skip the external references if there no match.[1]标记为“N / A”的功能没有系统属性。
[2]该值应与此表中列出的完全一致,区分大小写。 任何未指定的值将导致
IllegalArgumentException
。[3]目录规范在the prefer attribute上定义了复杂的规则。 尽管首选项可以是public或system,但规范实际上使系统成为首选选项,也就是说,无论选项如何,如果找到系统条目,则始终使用系统条目。 仅当prefer是public并且未找到系统条目时才考虑公共条目。 因此,建议将prefer属性设置为public(这是默认值)。
[4]虽然OASIS目录规范中的非标准属性,
defer
和resolve
被Java Catalog API识别,defer
与resolve
相同,因为它是主目录的prefer
中的属性。 请注意,将仅使用为主Catalog文件的商品指定的属性。[5]如果打算共享整个目录存储,可能需要将属性
javax.xml.catalog.defer
设置为false以允许预加载整个目录。范围和顺序
可以通过目录文件,目录API,系统属性和jaxp.properties
设置功能和属性,优先级顺序相同。在目录和组条目的目录文件中指定为属性的属性应优先于任何其他设置。 例如,如果在目录文件中设置
prefer
属性,如prefer
中<catalog prefer="public">
,则“prefer”属性的任何其他输入都不是必需的,或者将被忽略。通过Catalog API设置的属性会覆盖可能由系统属性和/或
jaxp.properties
设置的属性。 在多个接口的情况下,程序中的最新应优先考虑。 对于CatalogFeatures.Feature.FILES
,这意味着通过CatalogManager
的方法指定的URI将覆盖可能通过CatalogFeatures.Builder
输入的任何URI 。设置时的系统属性应覆盖
jaxp.properties
中的jaxp.properties
。jaxp.properties
文件通常位于Java安装的conf目录中。 该文件仅由JAXP实现读取一次,然后缓存其值以供将来使用。 如果在第一次尝试从该文件读取时该文件不存在,则不再进行任何检查以检查其是否存在。 读取后,无法更改jaxp.properties
中任何属性的值。可以通过其构建器创建CatalogFeatures实例,如以下示例代码所示:
CatalogFeatures f = CatalogFeatures.builder() .with(Feature.FILES, "file:///etc/xml/catalog") .with(Feature.PREFER, "public") .with(Feature.DEFER, "true") .with(Feature.RESOLVE, "ignore") .build();
JAXP XML处理器支持
整个JAXP处理器支持目录功能,包括SAX和DOM(javax.xml.parsers
),以及StAX解析器(javax.xml.stream
),模式验证(javax.xml.validation
)和XML转换(javax.xml.transform
)。 可以通过定义setProperty或setAttribute接口的JAXP工厂或处理器来设置上述功能。 例如,以下代码段通过javax.xml.catalog.files
属性将URI设置为SAX解析器上的目录文件:SAXParserFactory spf = SAXParserFactory.newInstance(); spf.setFeature(XMLConstants.USE_CATALOG, true); [1] SAXParser parser = spf.newSAXParser(); parser.setProperty(CatalogFeatures.Feature.FILES.getPropertyName(), "file:///etc/xml/catalog");
[1]请注意,由于默认值
USE_CATALOG
为true, 因此不需要此语句。JAXP处理器对Catalog的支持取决于
USE_CATALOG
功能和是否存在有效的Catalog文件。 只有当该功能为true且通过javax.xml.catalog.files
属性指定了有效的目录文件时,JAXP处理器才会使用目录。 如果USE_CATALOG
设置为false,或者没有指定目录文件,则不会尝试使用目录。JAXP处理器将遵循
CatalogFeatures
的默认设置。 例如,由于javax.xml.catalog.resolve
属性的默认值为strict,因此当没有找到匹配的条目时,处理器将默认报告Exception。JAXP处理器优先考虑用户指定的自定义解析器。 如果注册了这样的解析器,它将在CatalogResolver上使用。 但是,如果它返回null,则处理器将继续使用CatalogResolver进行解析。 如果它返回一个空源,则CatalogResolver不会尝试。
Catalog支持可用于支持解析程序的JAXP库中的任何进程。 下表列出了所有此类过程。
Processes with Catalog Support
Processes with Catalog Support Process Catalog Entry Type Example DTDs and external entities public, systemThe following DTD reference: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> Can be resolved using the following Catalog entry: <public publicId="-//W3C//DTD XHTML 1.0 Strict//EN" uri="catalog/xhtml1-strict.dtd"/> or <systemSuffix systemIdSuffix="html1-strict.dtd" uri="catalog/xhtml1-strict.dtd"/>
XInclude uriThe following XInclude element: <xi:include href="http://openjdk.java.net/xml/disclaimer.xml"/> can be resolved using a URI entry: <uri name="http://openjdk.java.net/xml/disclaimer.xml" uri="file:///pathto/local/disclaimer.xml"/> or <uriSuffix uriSuffix="disclaimer.xml" uri="file:///pathto/local/disclaimer.xml"/>
XSD import uriThe following import element: <xsd:import namespace="http://openjdk.java.net/xsd/XSDImport_person" schemaLocation="http://openjdk.java.net/xsd/XSDImport_person.xsd"/> can be resolved using a URI entry: <uri name="http://openjdk.java.net/xsd/XSDImport_person.xsd" uri="file:///pathto/local/XSDImport_person.xsd"/> or <uriSuffix uriSuffix="XSDImport_person.xsd" uri="file:///pathto/local/XSDImport_person.xsd"/> or <uriSuffix uriSuffix="http://openjdk.java.net/xsd/XSDImport_person" uri="file:///pathto/local/XSDImport_person.xsd"/>
XSD include uriThe following include element: <xsd:include schemaLocation="http://openjdk.java.net/xsd/XSDInclude_person.xsd"/> can be resolved using a URI entry: <uri name="http://openjdk.java.net/xsd/XSDInclude_person.xsd" uri="file:///pathto/local/XSDInclude_person.xsd"/> or <uriSuffix uriSuffix="XSDInclude_person.xsd" uri="file:///pathto/local/XSDInclude_person.xsd"/>
XSL import and include uriThe following include element: <xsl:include href="http://openjdk.java.net/xsl/include.xsl"/> can be resolved using a URI entry: <uri name="http://openjdk.java.net/xsl/include.xsl" uri="file:///pathto/local/include.xsl"/> or <uriSuffix uriSuffix="include.xsl" uri="file:///pathto/local/include.xsl"/>
XSL document function uriThe document in the following element: <xsl:variable name="dummy" select="document('http://openjdk.java.net/xsl/list.xml')"/> can be resolved using a URI entry: <uri name="http://openjdk.java.net/xsl/list.xml" uri="file:///pathto/local/list.xml"/> or <uriSuffix uriSuffix="list.xml" uri="file:///pathto/local/list.xml"/>
- 从以下版本开始:
- 9
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 static class
CatalogFeatures.Builder
用于构建CatalogFeatures对象的Builder类。static class
CatalogFeatures.Feature
Catalog Features table中定义的要素类型。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 static CatalogFeatures.Builder
builder()
返回用于创建CatalogFeatures对象的构建器的实例。static CatalogFeatures
defaults()
返回具有默认设置的CatalogFeatures实例。String
get(CatalogFeatures.Feature cf)
返回指定要素的值。
-
-
-
方法详细信息
-
defaults
public static CatalogFeatures defaults()
返回具有默认设置的CatalogFeatures实例。- 结果
- 默认的CatalogFeatures实例
-
get
public String get(CatalogFeatures.Feature cf)
返回指定要素的值。- 参数
-
cf
- 目录功能的类型 - 结果
- 功能的价值
-
builder
public static CatalogFeatures.Builder builder()
返回用于创建CatalogFeatures对象的构建器的实例。- 结果
- 构建器的一个实例
-
-