查看源代码 xmerl_xsd (xmerl v2.1)

用于 XML Schema 验证的接口模块。

它处理 W3.org 的 规范,即 2004 年 10 月 28 日的 XML Schema 第二版。有关 XML Schema 的介绍,请学习 第 0 部分

XML 结构通过 xmerl_xsd:validate/[2,3] 进行验证。

摘要

类型

验证器的全局状态。

允许自定义验证行为的选项。

函数

从文件中读取模式处理状态。

将错误描述格式化为人类可读的字符串。

读取 XML 模式并检查其是否有效。

读取 XML 模式并检查其是否有效。

根据 XML 模式验证已解析的格式良好的 XML 元素。

将模式处理状态保存到文件中。

验证已解析的格式良好的 XML 元素 (Element)。

类型

链接到此类型

filename()

查看源代码 (未导出)
-type filename() :: string().
链接到此类型

global_state()

查看源代码 (未导出)
-type global_state() :: xsd_state().

验证器的全局状态。

它由 #xsd_state{} 记录表示。

链接到此类型

option_list()

查看源代码 (未导出)
-type option_list() :: [{xsdbase, filename()} | {atom(), term()}].

允许自定义验证行为的选项。

可能的选项包括:

{tab2file,boolean()}
启用将抽象结构保存到文件中以进行调试。
{xsdbase,filename()}
XSD 基本目录。
{fetch_fun,FetchFun}
用于获取外部资源的回调函数。
{fetch_path,PathList}
PathList 是获取文件时要搜索的目录列表。如果所讨论的文件不在 fetch_path 中,则 URI 将用作文件名。
{state,State}
通过此选项,可以提供一个带有先前验证的处理信息的状态。

函数

-spec file2state(FileName :: string()) -> {ok, State} | {error, Reason}
                    when State :: global_state(), Reason :: term().

从文件中读取模式处理状态。

从使用 state2file/[1,2] 创建的文件中读取模式状态以及已处理模式的所有信息。此文件的格式是内部的。然后可以使用该状态来验证 XML 文档。

-spec format_error(Reasons) -> io_lib:chars() when Reasons :: [Reason :: term()] | (Reason :: term()).

将错误描述格式化为人类可读的字符串。

链接到此函数

process_schema(Schema)

查看源代码
-spec process_schema(Schema :: string()) -> _.

等效于 process_schema(Schema, [])

链接到此函数

process_schema(Schema, Options)

查看源代码
-spec process_schema(Schema :: string(), Options :: option_list()) -> {ok, State} | {error, Reasons}
                        when State :: global_state(), Reasons :: [Reason :: term()] | (Reason :: term()).

读取 XML 模式并检查其是否有效。

读取引用的 XML 模式并检查其是否有效。返回带有模式信息的 global_state/0 或错误原因。错误原因可以是多个错误的列表,也可以是处理过程中遇到的单个错误。

链接到此函数

process_schemas(Schemas)

查看源代码
-spec process_schemas(Schemas :: list()) -> _.

等效于 process_schemas(Schemas, [])

链接到此函数

process_schemas(Schemas, Options)

查看源代码
-spec process_schemas(Schemas, Options) -> {ok, State} | {error, Reasons}
                         when
                             Schemas :: [{NameSpace, Schema}, ...],
                             Options :: option_list(),
                             NameSpace :: term(),
                             Schema :: string(),
                             State :: global_state(),
                             Reasons :: [Reason :: term()] | (Reason :: term()).

读取 XML 模式并检查其是否有效。

读取引用的 XML 模式并控制它们是否有效。返回带有模式信息的 global_state/0 或错误原因。错误原因可以是多个错误的列表,也可以是处理过程中遇到的单个错误。

链接到此函数

process_validate(Schema, Element)

查看源代码
-spec process_validate(Schema :: string(), Element :: xmerl:element()) -> _.

等效于 process_validate(Schema, Element, [])

链接到此函数

process_validate(Schema, Element, Options)

查看源代码
-spec process_validate(Schema, Element, Options) -> Result
                          when
                              Schema :: string(),
                              Element :: xmerl:element(),
                              Options :: option_list(),
                              Result :: {ValidElement, global_state()} | {error, Reasons},
                              ValidElement :: xmerl:element(),
                              Reasons :: [Reason :: term()] | (Reason :: term()).

根据 XML 模式验证已解析的格式良好的 XML 元素。

分两步进行验证。首先,它处理模式,将类型和结构信息保存在 ETS 表中,然后根据该模式验证元素。

使用示例

1>{E,_} = xmerl_scan:file("my_XML_document.xml"). 2>{E2,_} = xmerl_xsd:process_validate("my_XML_Schema.xsd",E).

请注意,如果例如在 my_XML_Schema.xsd 中定义了默认值,则 E2 可能与 E 不同。

-spec state2file(State :: global_state()) -> ok | {error, Reason} when Reason :: term().

等效于 state2file(State, SchemaName)

SchemaNameState 中模式的名称。

链接到此函数

state2file(S, FileName)

查看源代码
-spec state2file(global_state(), FileName :: string()) -> ok | {error, Reason} when Reason :: term().

将模式处理状态保存到文件中。

将模式状态以及已处理模式的所有信息保存在文件中。您可以为保存的状态提供文件名。FileName 将保存,并添加 .xss 扩展名。

链接到此函数

validate(Element, State)

查看源代码
-spec validate(Element :: xmerl:element(), State :: global_state()) -> _.

等效于 validate(Element, State, [])

链接到此函数

validate(Xml, State, Opts)

查看源代码
-spec validate(Element, global_state(), Options) -> Result
                  when
                      Element :: xmerl:xmlElement(),
                      Options :: option_list(),
                      Result :: {ValidElement, global_state()} | {error, Reasons},
                      ValidElement :: xmerl:xmlElement(),
                      Reasons :: [ErrorReason] | ErrorReason,
                      ErrorReason :: term().

验证已解析的格式良好的 XML 元素 (Element)。

调用 validate/2validate/3 必须提供格式良好的已解析 XML Element :: #xmlElement{} 和一个 State,global_state/0,其中包含来自已处理模式的必要信息。因此,validate 可以重用模式信息,因此如果需要针对同一模式进行多次验证,则可以减少时间消耗。

结果 ValidElement 是符合后模式验证信息集的有效元素。当验证器发现错误时,它会尝试继续并报告找到的所有错误的列表。在这些情况下,如果发现意外错误,可能会导致单个错误原因。

使用示例

1>{E,_} = xmerl_scan:file("my_XML_document.xml").
2>{ok,S} = xmerl_xsd:process_schema("my_XML_Schema.xsd").
3>{E2,_} = xmerl_xsd:validate(E,S).

请注意,如果例如在 my_XML_Schema.xsd 中定义了默认值,则 E2 可能与 E 不同。