- java.lang.Object
-
- javax.xml.catalog.CatalogFeatures
-
public class CatalogFeatures extends 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”的功能没有System属性。
[2]值应与本表格完全一致,区分大小写。 任何未指定的值将导致
IllegalArgumentException
。[3]目录规范对the prefer attribute中的复杂规则进行了定义 。 虽然可以是公共的或系统的,但是规范实际上使得系统成为首选方案,也就是说,无论选项如何,如果发现系统条目始终被使用。 公共条目只有在偏好为公开且系统条目未找到时才被考虑。 因此,建议将prefer属性设置为public(默认值)。
[4]尽管在OASIS规范目录非标准属性,
defer
和resolve
由Java目录API相同识别prefer
为在主目录的目录项的属性。 请注意,将仅使用为主目录文件的目录条目指定的属性。[5]如果意图共享整个目录库,可能希望将属性
javax.xml.catalog.defer
设置为false,以允许整个目录被预加载。范围和订单
功能和属性可以通过目录文件,Catalog API,系统属性和jaxp.properties
,优先级以相同的顺序设置。在目录和组条目的目录文件中指定为属性的属性应优先于其他任何设置。 例如,如果一个
prefer
属性在目录文件设定为<catalog prefer="public">
,对于“喜欢”的属性的任何其它输入是没有必要的或将被忽略。通过目录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
功能和有效的目录文件的存在。 仅当功能为真且有效时,JAXP处理器才会使用目录,通过javax.xml.catalog.files
属性指定目录文件。 如果USE_CATALOG
设置为false或没有指定目录文件,将不会尝试使用目录。JAXP处理器将遵守
CatalogFeatures
的默认设置。 例如,处理器将默认情况下报告异常,因为javax.xml.catalog.resolve
属性的默认值是严格的,因为没有匹配的条目。JAXP处理器优先于用户指定的自定义解析器。 如果这样的解析器被注册,它将被使用在CatalogResolver上。 如果它返回null,那么处理器将继续使用CatalogResolver进行解析。 如果它返回一个空源,则不会尝试由CatalogResolver。
目录支持可用于支持解析器的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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static class
CatalogFeatures.Builder
用于构建CatalogFeatures对象的Builder类。static class
CatalogFeatures.Feature
Catalog Features table中定义的要素类型。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 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对象的构建器的实例。- 结果
- 建筑师的一个实例
-
-