YSTest: NPL::SXML 命名空间参考

YSTest PreAlpha_b800_20170810 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

- 命名空间列表
- 命名空间成员

枚举 | 函数
NPL::SXML 命名空间参考

SXML 表示。 更多...

## 枚举

enum | ParseOption { ParseOption::Normal, ParseOption::Strict, ParseOption::String, ParseOption::Attribute }
| 限定解析选项。 更多...

## 函数

YF_API ValueNode | MakeXMLDecl (const string &={}, const string &="1.0", const string &="UTF-8", const string &={})
| 构造 SXML 文档 XML 声明节点。 更多...
YF_API ValueNode | MakeXMLDoc (const string &={}, const string &="1.0", const string &="UTF-8", const string &={})
| 构造包含 XML 声明的 SXML 文档节点。 更多...
YF_API string | ConvertAttributeNodeString (const TermNode &)
| 转换 SXML 节点为 XML 属性字符串。 更多...
YF_API string | ConvertDocumentNode (const TermNode &, IndentGenerator=DefaultGenerateIndent, size_t=0, ParseOption=ParseOption::Normal)
| 转换 SXML 文档节点为 XML 字符串。 更多...
YF_API string | ConvertStringNode (const TermNode &)
| 转换 SXML 节点为被转义的 XML 字符串。 更多...
YF_API void | PrintSyntaxNode (std::ostream &os, const TermNode &, IndentGenerator=DefaultGenerateIndent, size_t=0)
| 打印 SContext::Analyze 分析取得的 SXML 语法树节点并刷新流。 更多...
template<typename... _tParams>
ValueNode | MakeTop (const string &name, _tParams &&...args)
| 构造 SXML 文档顶级节点。 更多...
| PDefH (ValueNode, MakeTop,) ImplRet(MakeTop(
| PDefH (NodeLiteral, MakeAttributeTagLiteral, std::initializer_list< NodeLiteral > il) ImplRet(
| 构造 SXML 属性标记字面量。 更多...
template<typename... _tParams>
NodeLiteral | MakeAttributeTagLiteral (_tParams &&...args)
| PDefH (NodeLiteral, MakeAttributeLiteral, const string &name, std::initializer_list< NodeLiteral > il) ImplRet(
| 构造 XML 属性字面量。 更多...
template<typename... _tParams>
NodeLiteral | MakeAttributeLiteral (const string &name, _tParams &&...args)
template<class _tNodeOrCon >
void | InsertAttributeNode (_tNodeOrCon &&node_or_con, const string &name, std::initializer_list< NodeLiteral > il)
| 插入只有 XML 属性节点到语法节点。 更多...
template<class _tNodeOrCon , typename... _tParams>
void | InsertAttributeNode (_tNodeOrCon &&node_or_con, const string &name, _tParams &&...args)

## 详细描述

SXML 表示。

参见
  http://okmij.org/ftp/Scheme/SXML.html 。

自从
  build 597

## 枚举类型说明

enum NPL::SXML::ParseOption

strong

限定解析选项。

枚举值
Normal |
Strict |
String |
Attribute |

在文件 NPL.h 第 60 行定义.

## 函数说明

string NPL::SXML::ConvertAttributeNodeString | ( | const TermNode & | term | ) |

转换 SXML 节点为 XML 属性字符串。

自从
  build 674

异常

  LoggedEvent | 没有子节点。

注解
  当前不支持 annotation ，在超过 2 个子节点时使用 YTraceDe 警告。

在文件 NPLA.cpp 第 154 行定义.

参考 platform::Deref(), YSLib::i, platform::Descriptions::Warning, YB_ATTR_fallthrough , 以及 YTraceDe.

参考自 ConvertDocumentNode().

函数调用图:

这是这个函数的调用关系图:

string NPL::SXML::ConvertDocumentNode | ( | const TermNode & | term,
|  | IndentGenerator | igen = `DefaultGenerateIndent`,
|  | size_t | depth = `0`,
|  | ParseOption | opt = `ParseOption::Normal`
| ) |  |

转换 SXML 文档节点为 XML 字符串。

异常

  LoggedEvent | 不符合最后一个参数约定的内容被解析。
  ystdex::unimplemented | 指定 ParseOption::Strict 时解析未实现内容。

参见
  ConvertStringNode
  http://okmij.org/ftp/Scheme/SXML.html#Annotations 。

待办事项:
  支持 ENTITY 和 NAMESPACES 标签。

转换 SXML 文档节点为 XML 。 尝试使用 ConvertStringNode 转换字符串节点，若失败作为非叶子节点递归转换。 因为当前 SXML 规范未指定注解(annotation) ，所以直接忽略。

在文件 NPLA.cpp 第 178 行定义.

参考 CatchExpr, ConvertAttributeNodeString(), ConvertStringNode(), NPL::Deliteralize(), platform::Deref(), CHRLib::e, ystdex::bad_any_cast::from(), YSLib::i, ystdex::quote(), YSLib::Text::str, ystdex::bad_any_cast::to(), platform::Descriptions::Warning, YB_UNLIKELY , 以及 YTraceDe.

参考自 PrintSyntaxNode().

函数调用图:

这是这个函数的调用关系图:

string NPL::SXML::ConvertStringNode | ( | const TermNode & | term | ) |

转换 SXML 节点为被转义的 XML 字符串。

参见
  EscapeXML

在文件 NPLA.cpp 第 282 行定义.

参考 ystdex::call_value_or() , 以及 NPL::EscapeXML().

参考自 ConvertDocumentNode().

函数调用图:

这是这个函数的调用关系图:
template<class _tNodeOrCon >

void NPL::SXML::InsertAttributeNode | ( | _tNodeOrCon && | node_or_con,
|  | const string & | name,
|  | std::initializer_list< NodeLiteral > | il
| ) |  |

inline

插入只有 XML 属性节点到语法节点。

在文件 NPLA.h 第 383 行定义.

参考 NPL::InsertChildSyntaxNode() , 以及 MakeAttributeLiteral().

函数调用图:
template<class _tNodeOrCon , typename... _tParams>

void NPL::SXML::InsertAttributeNode | ( | _tNodeOrCon && | node_or_con,
|  | const string & | name,
|  | _tParams &&... | args
| ) |  |

inline

在文件 NPLA.h 第 390 行定义.

参考 CHRLib::args, NPL::InsertChildSyntaxNode(), MakeAttributeLiteral() , 以及 yforward.

函数调用图:
template<typename... _tParams>

NodeLiteral NPL::SXML::MakeAttributeLiteral | ( | const string & | name,
|  | _tParams &&... | args
| ) |  |

在文件 NPLA.h 第 373 行定义.

参考 CHRLib::args, MakeAttributeTagLiteral(), YSLib::UI::name , 以及 yforward.

参考自 InsertAttributeNode().

函数调用图:

这是这个函数的调用关系图:
template<typename... _tParams>

NodeLiteral NPL::SXML::MakeAttributeTagLiteral | ( | _tParams &&... | args | ) |

在文件 NPLA.h 第 360 行定义.

参考 CHRLib::args , 以及 yforward.

参考自 MakeAttributeLiteral() , 以及 PDefH().

这是这个函数的调用关系图:
template<typename... _tParams>

ValueNode NPL::SXML::MakeTop | ( | const string & | name,
|  | _tParams &&... | args
| ) |  |

构造 SXML 文档顶级节点。

自从
  build 599

在文件 NPLA.h 第 325 行定义.

参考 CHRLib::args, YSLib::MakeIndex , 以及 yforward.

参考自 MakeXMLDoc().

这是这个函数的调用关系图:

ValueNode NPL::SXML::MakeXMLDecl | ( | const string & | name = `{}`,
|  | const string & | ver = `"1.0"`,
|  | const string & | enc = `"UTF-8"`,
|  | const string & | sd = `{}`
| ) |  |

构造 SXML 文档 XML 声明节点。

注解
  第一个参数指定节点名称，其余参数指定节点中 XML 声明的值：版本、编码和独立性。
  最后两个参数可选为空值，此时结果不包括对应的属性。

警告
  不对参数合规性进行检查。

在文件 NPLA.cpp 第 299 行定义.

参考 YSLib::MakeIndex.

参考自 MakeXMLDoc().

这是这个函数的调用关系图:

ValueNode NPL::SXML::MakeXMLDoc | ( | const string & | name = `{}`,
|  | const string & | ver = `"1.0"`,
|  | const string & | enc = `"UTF-8"`,
|  | const string & | sd = `{}`
| ) |  |

构造包含 XML 声明的 SXML 文档节点。

参见
  MakeTop
  MakeXMLDecl

在文件 NPLA.cpp 第 313 行定义.

参考 YSLib::MakeIndex, MakeTop() , 以及 MakeXMLDecl().

函数调用图:

NPL::SXML::PDefH | ( | ValueNode | ,
|  | MakeTop |
| ) |  |

inline

在文件 NPLA.h 第 330 行定义.

NPL::SXML::PDefH | ( | NodeLiteral | ,
|  | MakeAttributeTagLiteral | ,
|  | std::initializer_list< NodeLiteral > | il
| ) |  |

inline

构造 SXML 属性标记字面量。

在文件 NPLA.h 第 355 行定义.

NPL::SXML::PDefH | ( | NodeLiteral | ,
|  | MakeAttributeLiteral | ,
|  | const string & | name,
|  | std::initializer_list< NodeLiteral > | il
| ) |  |

inline

构造 XML 属性字面量。

在文件 NPLA.h 第 368 行定义.

参考 MakeAttributeTagLiteral() , 以及 YSLib::UI::name.

函数调用图:

void NPL::SXML::PrintSyntaxNode | ( | std::ostream & | os,
|  | const TermNode & | term,
|  | IndentGenerator | igen = `DefaultGenerateIndent`,
|  | size_t | depth = `0`
| ) |  |

打印 SContext::Analyze 分析取得的 SXML 语法树节点并刷新流。

参见
  ConvertDocumentNode
  SContext::Analyze
  Session

参数节点中取第一个节点作为 SXML 文档节点调用 ConvertStringNode 输出并刷新流。

在文件 NPLA.cpp 第 288 行定义.

参考 ConvertDocumentNode(), platform::Deref() , 以及 ystdex::write().

函数调用图: