XML リテラル


プログラム上で XML の文章を記述したい場合

VB.NET の場合

Dim contactDoc As XDocument = _
    <?xml version="1.0"?>
    <contact>
      <name>Patrick Hines</name>
      <phone type="home">206-555-0144</phone>
      <phone type="work">425-555-0145</phone>
    </contact>

VB.NET のコードにXMLが同居している。生のXMLがそのまま記述できる。このような書き方をXMLリテラルという。見やすいのは確か。使いやすいかは不明

C# は別の方法を使った

XElement contacts =
   new XElement("contacts",CopyCode
      new XElement("contact",
         new XElement("name", "Patrick Hines"),
         new XElement("phone", "206-555-0144", 
             new XAttribute("type", "home")),
         new XElement("phone", "425-555-0145",
             new XAttribute("type", "work")),
         new XElement("address",
            new XElement("street1", "123 Main St"),
            new XElement("city", "Mercer Island"),
            new XElement("state", "WA"),
            new XElement("postal", "68042")
         )
      )
);


C#VB.NET 程の奔放さを避けたのであろうか。それぞれのエレメントに対して new XElementで包まなければならない。
見やすくはない、これだけの処置を施したわけだから使うときには楽であってほしい。きっと使いやすさは、IDE側で補完などが活躍するのだろう。


そこで、ActionScript 3.0 の XML 関係
ECMAScript で承認された、E4X(ECMAScript for XML)に準拠している。

var myXML:XML = 
    <order>
        <item id='1' quantity='2'>
            <menuName>burger</menuName>
            <price>3.95</price>
        </item>
    <order>;


あれ?VB.NET のによく似ている。ということは、ECMAではXMLリテラル推進しているわけで、そんなに変なものではない、ということなのか。
そうなるとC#のほうが逆にいびつに見えてきたりして。


他の文化を知ることでこれまで当然と思い、疑うこともしなかったことが違って見えてくる。
多少面食らったあと、落ち着きを取り戻すと、これまでの常識が相対化して見えるようになる。
しかも互いが関連性をもった相対化である。どれかを拒絶するのではなく、すべてを飲み込むことにする。