2016-08-15 5 views
2

dart-xmlのビルドとxmlのドキュメントに情報を追加することは可能でしょうか?XmlBuilder.processingはさらに引数を受け入れることができますか?

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または多くのargsを持つことができますが、これを行うにはどうすればよいでしょうか? 2つ以上の引数を含むようにリストを変更するか、より複雑になり、xsltの場合は 'href'、xsdの場合は他の定義を追加する必要がありますか?

答えて

2

dart-xmlは、standardに記載されている処理命令を解析すると考えています。つまり、パーサーは<??>の間のすべてをtargetdataの文字列に単純に分割します。

したがって、ビルダーは引数として2つの文字列も必要とします。あなたは、単に書くことができます。

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

おそらくこのようなXML宣言の作成を簡素化するためにビルダーにメソッドを追加するために良いでしょう。気軽に問題を提出してください。

+0

こんにちはRengli、それは動作しません。なんらかの理由で、builder.processingが受け入れることができるargsには限界があります。私は上記で入力したエラーを返します。私は試し続けます。また、ダーツXMLリポジトリに関する一般的な問題を開いて、誰かがアイデアを持っているかどうかを確認したり、時間があるときに入力したりしました。 – lubi

+0

私はこのテストを[GitHub](https://github.com/renggli/dart-xml/commit/dc2adbd3d28abac1b08acf33174c71ca2b7afe44)に追加しました。処理には2つの引数があります。最初の引数はターゲットで、2番目の引数はデータです(例では2つの属性のように見えます)。 –

+1

私はこの仕事をするためにあなたが何をしたのか分かりました。カンマとアポストロフィを削除して、2つの引数を1つに変換してください。これにより、ターゲットとデータ文字列が残ります。 "" xml "、" version = "1.0" '、' encoding = "UTF-8" 'は' 'xml'、 'version = "1.0" encoding = "UTF-8"'になります。 。 – lubi

関連する問題