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

时间:2016-08-15 07:57:36

标签: xml xslt xsd dart

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

以下两种方法都适用于构建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()方法中设置的。

 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或多个args,那么我如何启用processing()来执行此操作?是否需要更改列表以包含2个以上的args,或者它是否会更复杂并且需要为xslt添加其他定义,例如'href'或xsd的其他定义?

1 个答案:

答案 0 :(得分:3)

我相信,dart-xml解析standard中描述的处理指令。这意味着解析器只需将<??>之间的所有内容拆分为targetdata字符串。

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

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

向构建器添加方法以简化此类XML声明的创建可能是个好主意。感觉免费提出问题。