no versions found for ApplicationFrameworkReferences / Appendix/modelinterfacetag / en

モデルインターフェース定義の構文

モデルインターフェースはXMLテキストによって定義されます。 そのXMLの構文の定義を以下に示します。

XML 構文定義

ABNF による XML の構文定義は下記の通りです:

  • 記法は IETF-RFC 5234 (https://datatracker.ietf.org/doc/html/rfc5234) に従う。

    例えば DQUOTE は二重引用符、LWSP は改行を含む空白文字列を表す。

  • 以下で未定義の規則 http-uri および https-uri は IETF-RFC 3986 に従う、HTTP および HTTPS の URL 文字列を表す。

  • 以下で未定義の規則 javascript-variable-name および javascript-property-name はそれぞれ、JavaScript で使用可能な、変数名およびプロパティ名を表す文字列である。

    変数名およびプロパティ名を表す識別子に関しては以下を参照: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers

  • 以下で未定義の規則 javascript-property-type は、JavaScript のプロパティのデータ型を表す文字列である。

    プリミティブ値のデータ型に関しては以下を参照: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Data_structures#primitive_values

  • 以下で定義する規則は実際より厳格である

    例えば XML として許容すべき空白の挿入や二重引用符の不在などを一部考慮していないし、通常複数あり得る属性の記述順序に関しても一つの順序だけを示しているに過ぎない。


; XML SPEC

interface-definition  ::= model-tag

; TAG SPEC

model-tag             ::= "<" "model" LWSP ">"
                          LWSP
                            *( import-tag / interface-tag )
                          LWSP
                          "</" "model" ">"

import-tag            ::= "<" "import" LWSP
                          import-tag-attributes
                          LWSP "/>"

interface-tag         ::= "<" "interface" LWSP interface-tag-attributes LWSP ">"
                          LWSP
                            *( unit-tag / model-property-tag  )
                          LWSP
                          "</" "interface" ">"

model-property-tag        ::= function-tag          /
                          event-handler-tag     /
                          observable-object-tag /
                          observable-array-tag  /
                          restful-object-tag    

unit-tag             ::= "<" "unit" LWSP unit-tag-attributes LWSP ">"
                          LWSP
                            *( unit-tag / model-property-tag )
                          LWSP
                          "</" "unit" ">"

function-tag          ::= "<" "function" LWSP function-tag-attributes LWSP ">"
                          LWSP
                            *( arg-tag )
                          LWSP
                          "</" "function" ">"

arg-tag               ::= "<" "arg" LWSP
                          arg-tag-attributes
                          LWSP "/>"

event-handler-tag     ::= "<" "event-handler" LWSP
                          event-handler-tag-attributes
                          LWSP "/>"

observable-object-tag ::= "<" "observable-object" LWSP
                          observable-object-tag-attributes
                          LWSP "/>"

observable-array-tag  ::= "<" "observable-array" LWSP
                          observable-array-tag-attributes
                          LWSP "/>"

restful-object-tag    ::= "<" "restful-object" LWSP restful-object-tag-attributes LWSP ">"
                          LWSP
                            *( method-tag )
                          LWSP
                          "</" "restful-object" ">"

method-tag            ::= get-tag               /
                          post-tag              /
                          put-tag               /
                          delete-tag

get-tag               ::= "<" "get" LWSP
                          get-tag-attributes
                          LWSP "/>"

post-tag              ::= "<" "post" LWSP
                          post-tag-attributes
                          LWSP "/>"

put-tag               ::= "<" "put" LWSP
                          put-tag-attributes
                          LWSP "/>"

delete-tag            ::= "<" "delete" LWSP
                          delete-tag-attributes
                          LWSP "/>"

; TAG ATTRIBUTES SPEC

import-tag-attributes ::= path-attribute

interface-tag-attributes
                      ::= [ class-attribute ]

unit-tag-attributes  ::= name-attribute [ LWSP class-attribute ]

function-tag-attributes
                      ::= name-attribute LWSP
                          "locale" "=" DQUOTE ( "local" / "native" ) DQUOTE LWSP
                          path-attribute
                          [ LWSP class-attribute ]
                      ;  それぞれの属性は順不同

arg-tag-attributes    ::= name-attribute LWSP type-attribute 

event-handler-tag-attributes
                      ::= name-attribute LWSP
                          "locale" "=" DQUOTE ( "local" / "native" ) DQUOTE LWSP
                          path-attribute
                          [ LWSP class-attribute ]
                      ;  それぞれの属性は順不同

observable-object-tag-attributes
                      ::= name-attribute LWSP
                          "locale" "=" DQUOTE "local" DQUOTE LWSP
                          path-attribute
                          [ LWSP class-attribute ]
                      ;  それぞれの属性は順不同

observable-array-tag-attributes
                      ::= name-attribute LWSP
                          "locale" "=" DQUOTE "local" DQUOTE LWSP
                          path-attribute
                          [ LWSP class-attribute ]
                      ;  それぞれの属性は順不同

restful-object-tag-attributes
                      ::= local-restful-object-tag-attributes  /
                          native-restful-object-tag-attributes /
                          remote-restful-object-tag-attributes
local-restful-object-tag-attributes
                      ::= name-attribute LWSP
                          "locale" "=" DQUOTE "local" DQUOTE LWSP
                          path-attribute
                          [ LWSP class-attribute ]
                      ;  それぞれの属性は順不同
native-restful-object-tag-attributes
                      ::= name-attribute LWSP
                          "locale" "=" DQUOTE "native" DQUOTE LWSP
                          path-attribute
                          [ LWSP class-attribute ]
                      ;  それぞれの属性は順不同
remote-restful-object-tag-attributes
                      ::= name-attribute LWSP
                          "locale" "=" DQUOTE "remote" DQUOTE LWSP
                          uri-attribute
                          [ LWSP auth-attribute ]
                      ;  それぞれの属性は順不同

get-tag-attributes    ::= name-attribute LWSP type-attribute 

post-tag-attributes   ::= name-attribute LWSP type-attribute 

put-tag-attributes    ::= name-attribute LWSP type-attribute 

delete-tag-attributes ::= name-attribute LWSP type-attribute 


; ATTRIBUTE SPEC

class-attribute       ::= "class" "=" DQUOTE class-value DQUOTE
class-value           ::= javascript-variable-name

name-attribute        ::= "name" "=" DQUOTE name-value DQUOTE
name-value            ::= javascript-property-name

type-attribute        ::= "type" "=" DQUOTE type-value DQUOTE
type-value            ::= javascript-property-type

locale-attribute      ::= "locale" "=" DQUOTE locale-value DQUOTE
locale-value          ::= "local"  /
                          "native" /
                          "remote"

path-attribute        ::= "path" "=" DQUOTE path-value DQUOTE
path-value            ::= javascript-property-name / file-path

uri-attribute         ::= "uri" "=" DQUOTE uri-value DQUOTE
uri-value             ::= http-uri / https-uri

auth-attribute        ::= "auth" "=" DQUOTE auth-value DQUOTE
auth-value            ::= auth-id