NXML to XAL

NXML to XAL

概要

Nexaweb は、Platform4.5のアプリケーション開発のため新しいXMLシンタックスを導入しました。この新しいシンタックスは XAL(eXtensible Application Language)として知られ、様々なテクノロジー上の Rich User Interface 開発を可能し、Nexaweb Universal Client Framework に対応するよう設計されています。今回は UCF は Ajax, Java、offline テクノロジーに対応しています。
XALの利点

  1. HTMLとCSS標準に準拠したクロステクノロジー シンタックス; 技術者には幅広く知られています

  2. Future ready(将来に備えてあります); 新しい技術もUniversalClient Frameworkで対応できます。

  3. シンプルで、統一性のあるシンタックス; 属性が読みやすく、レイアウトがより直感的です。

変更点概要

  1. 3つのスキーマが作成されました: Core、HTML、Java です。HTML と Java はそれぞれ特定の技術拡張を含みますが、コアは共有シンタックスで示されます。

  2. Root タグが NXML から XAL に変更されました。

  3. XAL シンタックスは namespace を必要としますが、NXMLは必要としませんでした。

  4. 統一性と使い易さのため、属性の名前をより CSS と JavaScript スタイルの名前と合致するよう変更されました。

  5. レイアウトシンタックスの開発と使用を簡素化するため、レイアウトマネジャとパネルが1つのタグに統合されました。これによりストラクチャと XModify sytnax が変更されました。

  6. Measure 属性は測定の1-4リストを対応するよう強化されました。NXML は1か4のみ対応でした。

  7. Measures はpx, pt, %等の HTML で利用可能なオプションを反映するため拡張されました。今回の Java では、px のみ対応していますが将来のバージョンでは HTML Measure の全てもしくは大部分に対応する予定です。 

  8. Macro、MCO、Data Binding、XInclude は変更されていません; それぞれ新しい namespace が作成されています。

  9. XUpdate は XModify に変更されました; シンタックスはそのまま残ります。

  10. Nexaweb Platform は引き続き変更なしでNXML シンタックスに対応しています。

NXMLからの移行
NXML から XAL に移行する時考慮する点は以下です:

  1. NXML ファイルと XAL シンタックスに変更する

  2. Namespace を新 namespace に移行する; デフォルトシンタックスは namespace が必要です;

  3. ファイル名をXUpdate をXModifyに変更する

  4. DOMAPIを使用するアプリケーションコードを新ストラクチャと属性に更新する

  5. XModify シンタックスを新ストラクチャと属性に更新する

  6. 今回は NFC は XAL 対応していない

  7. 表と SVG は変更していない; 引き続きnamespace=""で使用

変更詳細は以下をご覧ください。
 

4.5.1 での NXML から XAL へのシンタックス変更の詳細一覧

  1. 次の 3 つのスキーマが作成されました。CoreHTML、および Java です。コア スキーマには拡張子ポイントがあり、テクノロジ固有の要素と属性をサポートします。これらのスキーマは、nexawebxmlfull.xsd を置き換えます。

    • xal.xsd (xal-core.xsd ではありません) は、Core XAL シンタックスを定義します。

    • xal-java.xsd は、XAL Java 拡張子を定義します。

    • xal-html.xsd は、XAL HTML 拡張子を定義します。

  2. レイアウト マネージャと <panel> コンポーネントは、レイアウト マネージ ペインに置き換えられました。各レイアウト マネージ ペインは、基本的に NXML レイアウト マネージャ <panel> コンポーネントを組み合わせたものです。 

    • freePane

    • borderPane

    • cardPane

    • gridPane

    • horizontalBoxPane

    • verticalBoxPane

    • horizontalFlowPane

    • verticalFlowPane

  3. 上記のレイアウト マネージャの変更により、NXML で水平 flowLayout にデフォルト設定されていたコンテナが、soloPane から派生したコンポーネント (<left><right><top><bottom><tab> など) のように動作するようになりました。これにより、最初の子がコンテンツ領域全体に拡張されます。これは、次のコンテナに影響します。 

    • rootPane (rootPane には、rootPane の左上隅に対して相対的な xyheightwidth の値でレンダリングされた複数のウィンドウ ベースの子を含めることもできます)

    • desktopPane (desktopPane には、desktopPane の左上隅に対して相対的な xyheightwidth の値でレンダリングされた複数のウィンドウ ベースの子を含めることもできます)

    • window

    • dialog

  4. HTML との一貫性を考慮し、いくつかの属性名が変更されました。

    • enabled disabled に変更されました。

    • margin padding に変更されました。

  5. 一般的な操作に合わせて属性が変更されました。

    • increment pageIncrement に変更されました。

  6. いくつかのフォント スタイル属性が、構文的に HTML に近く、より用途の広いフォント スタイル属性に置き換えられました。ブール型の属性がなくなりました。これらがサポートする特定の値については、スキーマ ドキュメントを参照してください (Java プラットフォームと Ajax プラットフォームで異なります) 

    • fontUnderlined textDecoration に置き換えられました。

      • Java: "none" | "underline"

      • Ajax: "none" | "underline" | "overline" | "line-through" | "blink"

    • fontBold fontWeight に置き換えられました。

      • Java: "bold" | "normal"

      • Ajax: "bold" | "normal" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900"

    • fontItalics fontStyle に置き換えられました。

      • Java: "normal" | "italic"

      • Ajax: "normal" | "italic" | "oblique"

    • fontName fontFamily に置き換えられました。

      • Java: "monospaced" | "serif" | "sans-serif" | "default" | "dialog" | "dialog-input"

      • Ajax: "monospaced" | "serif" | "sans-serif" | "cursive" | "fantasy"

      • メモ: これは、すぐにカンマ区切りのリストを受け取ります。

  7. 引き続き fontSize は使用されますが、フォントの測定単位を受け取るようになりました。

    • in Ajax: (size unit, pt, cm, mm, in, ex, pc, %)

    • in Java: (size units, pt)

  8. すべての色属性では "font" という語が省略されます。また、HTML との一貫性を考慮し、"background" とスペルアウトされます。

    • altBgColor altBackgroundColor に変更されました。

    • altFontColor altColor に変更されました。

    • bgColor backgroundColor に変更されました。

    • highlightBgColor highlightBackgroundColor に変更されました。

    • highlightFontColor highlightColor に変更されました。

    • fontColor color に変更されました。

    • fontColorDisabled colorDisabled に変更されました。

    • selectedFontColor selectedColor に変更されました

  9. すべての "img" 属性は "image" とスペルアウトされます。

    • img image に変更されました。

    • imgBackground backgroundImage に変更されました。

    • imgClose closeImage に変更されました。

    • imgClosed closedImage に変更されました。

    • imgDisabled disabledImage に変更されました。

    • imgDisabledSelected disabledSelectedImage に変更されました。

    • imgHeight imageHeight に変更されました。

    • imgHint hintImage に変更されました

    • imgIcon iconImage に変更されました。

    • imgLeaf leafImage に変更されました。

    • imgMax maximizeImage に変更されました。

    • imgMin > minimizeImage に変更されました。

    • imgOpen openImage に変更されました。

    • imgOver mouseOverImage に変更されました。

    • imgOverSelected mouseOverSelectedImage に変更されました。

    • imgPressed pressedImage に変更されました

    • imgPressedSelected pressedSelectedImage に変更されました。

    • imgRestore restoreImage に変更されました。

    • imgSelected selectedImage に変更されました。

    • imgWidth imageWidth に変更されました。

  10. DropShadow 対応がXALのJava 実装に追加されました。

    • dropShadow

    • dropShadowOffset

  11. サイズを指定する属性値は、単位や座標を特定するために接尾にサフィックスを必要とします。
    Java のデフォルトは "px" です( "px" のみ対応します)
    HTML JavaScript はデフォルト対応せず、HTML対応単位の"px","%", "em","pt"のうち1つを特定しなくてはなりません。これは以下の属性に影響します:

    • borderCorner

    • borderWidth

    • dropShadowOffset

    • height

    • padding

    • width

    • x

    • y

  12. 色を指定する属性は Java よりも HTML/Javascript でより多くの名前に対応しており、 RGB や16進表記にも対応しています。

  13. 境界タイプ(4つのリスト)は 1 から 4 までスペースで区切られた値(NXML は 1 もしくは 4 つのコンマ区切りの値にのみ対応)に対応するよう拡張されました。これは all | top/bottom, left/right | top, left/right, bottom | top, right, bottom, leftを設定します。これは以下の属性に影響します:

    • borderColor

    • borderCorner

    • borderStyle

    • borderWidth

    • padding

  14. 表示方向のあるコンポーネントは、orientation 属性を持つベースコンポーネントのかわりに、
    horizontal vertical が付くコンポーネントを持つようになりました。

    • slider horizontalSlider, verticalSliderに変更されました。

    • scrollBar horizontalScrollBar, verticalScrollBarに変更されました。

    • toolBar horizontalToolBar, verticalToolBarに変更されました。

    • splitPane horizontalSplitPane, verticalSplitPaneに変更されました。

  15. コンテナレファレンスは[containerName]://[objectName].[method](arg1, ...) から
    [containerName]:[objectName].[method](arg1, ...) へ変更されました。例:

  16. Chart SVG XAL 言語仕様に含まれません。

  17. ドキュメントのルートノードは<nxml>から<ui>へ変更されました。

  18. Menubar シンタックス はスタイルを改善するため変更されました。以下の例では、”menu”はmenu barの項目を参照し、”popupMenu”は実際のポップアップを参照します。このため、stylesheetとapp内のスタイルがより簡単になり ます。”popupMenu”のスタイル変更は右クリックメニューと、menuBarからのpopupを変更します。”menuItem”は”popup Menu”を子として保有し、subMenuを作成することができます。

     

<menuBar> <menu> <popupMenu> <menuItem/> <menuItem/> <menuItem> <popupMenu> ... </popupMenu> </menuItem> </popupMenu> </menu> </menuBar>
  1. CO は大部分の使用で、 <declarations> タグを必要としなくなりました。 NXML は <declarations> のみ対応していますが、XAL は <mco> タグで浮遊性 free-floating の発生を可能にします。

    • <declarations> は未だに有効な使用ケースがあります:オペレーションの順序が個々のMCO タグとは少し異なるグループとして、MCO を定義することができます。<declarations> に MCO が3つある場合、以下のようになります:

      1. すべての MCO が構築される

      2. すべての MCO のプロパティが設定される

      3. すべての MCO は onLoad eventが呼び出される

    • つまり、MCO1のonLoad eventにMCO3があることが分かります。なぜなら、すでにロードされているからです。

    • 以下の例は MCO1 に MCO3 を参照させているデモになります。99% のケースで、この種の順序付けはあまり問題になりませんが、このケースになった場合、 <declarations> は必要になります。

      <mco:declarations ...> <mco:mco id="MCO1" ...> <mco:property name="McoPointer">#MCO3</property> </mco:mco> <mco:mco id="MCO2" .../> <mco:mco id="MCO3" .../> </mco:declarations>
  2. NFC は XAL に対応していません。

4.5.2に導入されている追加シンタックスが変更されました。

table, tree, treeTable elements:

  • openImage は expandedImage に変更されました。

  • closedImage は collapsedImage に変更されました。

  • horizontalLines は horizontalLineColor に変更されました。

  • verticalLines は verticalLineColor に変更されました。

  • treeLines は treeLineColor に変更されました。

  • resizeColumns は resizeableColumns に変更されました。

  • swapColumns は swappableColumns に変更されました。

Layout panelで表示可能なelement (レイアウト管理属性):

  • hGrabSpace は gridHorizontalGrabSpace に変更されました。

  • vGrabSpace は gridVerticalGrabSpace に変更されました。

  • vAlign は gridVerticalAlignment に変更されました。

  • hAlign は gridHorizontalAlignment に変更されました。

  • columnSpan は gridColumnSpan に変更されました。

  • rowSpan は gridRowSpan に変更されました。

  • flex は boxFlex に変更されました。

  • name (cardPane で使用される場合) は cardName に変更されました。

gridPane, flowPane, borderPane elements:

  • gapVertical は verticalGap に変更されました。

  • gapHorizontal は horizontalGap に変更されました。

boxPane and flowPane elements:

  • align は alignment に変更されました。

horizontalSlider and verticalSlider elements:

  • posMin は minPosition に変更されました。

  • posMax は maxPosition に変更されました。

  • pos は position に変更されました。

全てのevent属性はこれらの変更点を反映しアップデートされています。

スクロールポジション属性:

  • scrollPosVertical は verticalScrollPosition に変更されました。

  • scrollPosHorizontal は horizontalScrollPosition に変更されました。

スクロールウインドウポジションはこの変更を反映し event 属性を変更しています。

テキストアラインメント属性:

  • alignHorizontal は horizontalAlignment に変更されました。

  • alignVertical は verticalAlignment に変更されました。

ラベル属性:

  • textPlacementHorizontal は horizontalTextToImagePlacement に変更されました。

  • textPlacementVertical は verticalTextToImagePlacement に変更されました。

その他注意:

  • colorDisabled は disabledColor に変更され、Java extensions でのみ有効となりました。

  • ignoreEvents は Xal core から Java extensions に移動されました。