xml - XmlBuilder.processing 可以接受更多参数吗?

标签 xml xslt xsd dart

使用 dart-xml 构建和 xml 文档时是否可以添加更多信息?

以下两者都可以很好地构建 xml、xslt。

builder.processing('xml', 'version="1.0"'); 
builder.processing('xml-stylesheet', 'type="application/xml"');

对于 xml,我想添加 UTF 指令以帮助国际化。

builder.processing('xml', 'version="1.0"', 'encoding="UTF-8"');
//gives error '2 positional arguments expected, but 3 found'

尝试链接到 XSLT 会很有帮助。

builder.processing('xml-stylesheet', 'type="application/xml"', href="hieroglyph.xsl"); 
//gives 2 errors; '2 positional arguments expected, but 3 found' 
//'Undefined name 'href''

我认为这是在dart-xml/lib/xml/grammar.dart内设置的和处理()方法。

 processing() => string(OPEN_PROCESSING)
      .seq(ref(nameToken))
      .seq(ref(space)
          .seq(any().starLazy(string(CLOSE_PROCESSING)).flatten())
          .pick(1)
          .optional(''))
      .seq(string(CLOSE_PROCESSING))
      .map((each) => createProcessing(each[1], each[2]));
  qualified() => ref(nameToken).map(createQualified);

正常的 Xml 元素可以有 0,1 或多个参数,那么我如何启用processing()来做到这一点?是否需要更改列表以包含 2 个以上的参数,或者是否会更复杂并需要添加其他定义,例如 xslt 的“href”或 xsd 的其他定义?

最佳答案

我相信,dart-xml解析处理指令,如 standard 中所述。 。这意味着解析器只是将 <? 之间的所有内容分开。和?>进入target和一个 data字符串。

因此,构建器也期望两个字符串作为参数。你可以简单地写:

 builder.processing('xml', 'version="1.0" encoding="UTF-8"');
 builder.processing('xml-stylesheet', 'type="application/xml" href="hieroglyph.xsl"');

向构建器添加一个方法来简化此类 XML 声明的创建可能是个好主意。请随意提出问题。

关于xml - XmlBuilder.processing 可以接受更多参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38951322/

相关文章:

xml - 按相同标准对不同元素进行排序

java - 修复XPath表达式中的绝对路径,以便它们可在另一个文档的上下文中使用

java - 使用 SimpleXML 读取 XML

java - 使用 ResideMenu lib 时删除菜单项

xslt - 如何根据 xslt 代码中的条件限制为标签添加属性

c# - 如何从有限制的类生成 XSD

java - 使用jaxb将xml解析为java对象时接收错误

java - 如何调整 JAXB 生成 Java 模型以获得我想要的 Java 代码?

c++ - 使用 const 迭代器放置/删除属性树,或如何将 const_iterator 转换为迭代器

xslt - 如何获取XSL中的处理指令属性值