JP5325921B2 - デコーダコンパイラ、プログラムおよび通信機器 - Google Patents
デコーダコンパイラ、プログラムおよび通信機器 Download PDFInfo
- Publication number
- JP5325921B2 JP5325921B2 JP2011070244A JP2011070244A JP5325921B2 JP 5325921 B2 JP5325921 B2 JP 5325921B2 JP 2011070244 A JP2011070244 A JP 2011070244A JP 2011070244 A JP2011070244 A JP 2011070244A JP 5325921 B2 JP5325921 B2 JP 5325921B2
- Authority
- JP
- Japan
- Prior art keywords
- grammar
- exi
- decoder
- value
- stack
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000004891 communication Methods 0.000 title claims description 8
- 230000006870 function Effects 0.000 claims description 58
- 238000000034 method Methods 0.000 description 16
- 238000006243 chemical reaction Methods 0.000 description 7
- 239000012634 fragment Substances 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Document Processing Apparatus (AREA)
Description
XML文書は、タグ名、属性、属性値、本文など、様々な要素により記述される。本実施形態に係る専用EXIデコーダは、このようなXML文書がエンコードされたEXIストリームを入力としてデコードし、必要な情報のみを抽出する。
XMLスキーマは、XML文書の許容される構造を定める。このスキーマ例は、参考文献1(John Schneider and Takuki Kamiya. Efficient XML Interchange (EXI) Format 1.0. W3C Candidate Recommendation, December 2009. http://www.w3.org/TR/exi/)より引用したものである。付録A.1のXML文書は、付録A.2のXMLスキーマに準拠している。
XML文書構造の各要素を表現するイベントと、EXIイベントコードと、次に用いるべき文法との関係を定めた複数の文法を含む。本実施形態では、XMLのイベントとして、SAXイベントを想定している。
スキーマ構造体対応情報の必須構成要素は、以下の通りである。
(1)出力となるべき構造体とその型
例では、struct product の部分と、各行の要素宣言(w_char* sku など) の部分にあたる。より詳細に、struct productは構造体の名前、skuなどは要素の名前、w_char*などは型である。
(2)構造体が対応するXML タグの開始位置を示すXPath (あるいはXPath と同等の文書位置の指示子)。例では、/order/product が、タグ開始位置を示すXPathにあたる。これは、XML文書の<order>の下位の<product>から、対応する</product>までの範囲が、ひとつの構造体に対応する情報が存在する範囲(後述するBODY部)であることを意味する。
(3)構造体の要素の箇所を特定するための、上記XPath 位置からの相対Path (あるいは同等の指示子)
例では、「@sku;」 や「quantity/text();」が、相対Pathにあたる。前者の例の場合、productタグの属性の値の箇所が、構造体の要素(skuなど)の箇所である。また後者の例の場合、quantityタグで囲まれた本文の箇所が、構造体の要素(quantity)の箇所である。
(4)XML 文書に含まれる値(EXIストリームで送られてきた値)を、上記(1)の構造体の各要素に格納するために用いる型変換関数
Complete grammar for element <product>
Use_color0 :
AT("color") [schema-typed value] Use_color1 0
AT("sku") [schema-typed value] Use_sku1 1
AT("color") [untyped value] Use_color1 2.4.0
AT("sku") [untyped value] Use_sku1 2.4.1
Use_color1 :
AT("sku") [schema-typed value] Use_sku1 0
AT("sku") [untyped value] Use_sku1 1.2.0
それぞれ、AT("color") が、@color に対応し、AT("sku") が@sku に対応する。
Complete grammar for element <product>
Term_quantity0,1 :
CH [untyped value] Term_quantity0,1 2.1
Term_price0,1 :
CH [untyped value] Term_price0,1 3.1
Term_quantity1,1 :
CH [untyped value] Term_quantity1,1 2.1
Term_price1,1 :
CH [untyped value] Term_price1,1 1.1
text() は、CH(Character) に対応するので、以上の文法が各要素に対応する。
1. 構造体-スキーマ対応情報に記載されたデコード開始位置までのストリーム(HEAD部に相当)は、単に読み飛ばす(S121のfalse、S122、S123)
2. BODY 部(XML 文書のうち構造体-スキーマ対応情報が対応する部分) のデコードは、繰り返し要素(たとえば<product>〜</product)がこれに相当)を一つデコードするたびに構造体r を生成し、デコーダ呼び出し元に返す(S121のtrue、S124、S125、S126のS127のt)
3. BODY 部を読み終わったら、残りのストリーム(TAIL部に相当)は捨てる(S127のfalse)
A.1 想定するXML文書の具体例
<?xml>
<order>
<product sku="1JB339" color="white">
<quantity>40</quantity>
<price>339.50</price>
</product>
<product sku="1JB340" color="black">
<quantity>25</quantity>
<price>155.0</price>
</product>
<product sku="1JB341" color="green">
<quantity>30</quantity>
<price>183.95</price>
</product>
</order>
A.2 XMLスキーマの例(参考文献1より引用)
<xs:element name="product">
<xs:complexType>
<xs:sequence maxOccurs="2">
<xs:element name="description" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs:integer" />
<xs:element name="price" type="xs:float" />
</xs:sequence>
<xs:attribute name="sku" type="xs:string" use="required" />
<xs:attribute name="color" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="order">
<xs:complexType>
<xs:sequence>
<xs:element ref="product" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
A.3 EXI 文法の例(参考文献1より引用)
Complete grammar for element <product>
Event Code
Use_color0 :
AT("color") [schema-typed value] Use_color1 0
AT("sku") [schema-typed value] Use_sku1 1
EE 2.0
AT(xsi:type) Use_color0 2.1
AT(xsi:nil) Use_color0 2.2
AT (*) Use_color0 2.3
AT("color") [untyped value] Use_color1 2.4.0
AT("sku") [untyped value] Use_sku1 2.4.1
AT (*) [untyped value] Use_color0 2.4.2
SE(*) Use_sku1_copied 2.5
CH [untyped value] Use_sku1_copied 2.6
Use_color1 :
AT("sku") [schema-typed value] Use_sku1 0
EE 1.0
AT (*) Use_color1 1.1
AT("sku") [untyped value] Use_sku1 1.2.0
AT (*) [untyped value] Use_color1 1.2.1
SE(*) Use_sku1_copied 1.3
CH [untyped value] Use_sku1_copied 1.4
Use_sku1 :
SE("description") Term_description0,1 0
SE("quantity") Term_quantity0,1 1
EE 2.0
AT (*) Use_sku1 2.1
AT (*) [untyped value] Use_sku1 2.2.0
SE(*) Use_sku1_copied 2.3
CH [untyped value] Use_sku1_copied 2.4
Use_sku1_copied :
SE("description") Term_description0,1 0
SE("quantity") Term_quantity0,1 1
EE 2.0
SE(*) Use_sku1_copied 2.1
CH [untyped value] Use_sku1_copied 2.2
Term_description0,1 :
SE("quantity") Term_quantity0,1 0
EE 1
SE(*) Term_description0,1 2.0
CH [untyped value] Term_description0,1 2.1
Term_quantity0,1 :
SE("price") Term_price0,1 0
EE 1
SE(*) Term_quantity0,1 2.0
CH [untyped value] Term_quantity0,1 2.1
Term_price0,1 :
SE("description") Term_description1,1 0
SE("quantity") Term_quantity1,1 1
EE 2
SE(*) Term_price0,1 3.0
CH [untyped value] Term_price0,1 3.1
Term_description1,1 :
SE("quantity") Term_quantity1,1 0
EE 1
SE(*) Term_description1,1 2.0
CH [untyped value] Term_description1,1 2.1
Term_quantity1,1 :
SE("price") Term_price1,1 0
EE 1
SE(*) Term_quantity1,1 2.0
CH [untyped value] Term_quantity1,1 2.1
Term_price1,1 :
EE 0
SE(*) Term_price1,1 1.0
CH [untyped value] Term_price1,1 1.1
Complete grammar for element <order>
Event Code
Term_product 0,0 :
SE("product") Term_product 1,0 0
EE 1.0
AT(xsi:type) Term_product 0,0 1.1
AT(xsi:nil) Term_product 0,0 1.2
AT (*) Term_product 0,0 1.3
AT (*) [untyped value] Term_product 0,0 1.4.0
SE(*) Term_product 0,0_copied 1.5
CH [untyped value] Term_product 0,0_copied 1.6
Term_product 0,0_copied :
SE("product") Term_product 1,0 0
EE 1.0
SE(*) Term_product 0,0_copied 1.1
CH [untyped value] Term_product 0,0_copied 1.2
Term_product 1,0 :
SE("product") Term_product 1,0 0
EE 1
SE(*) Term_product 1,0 2.0
CH [untyped value] Term_product 1,0 2.1
A.4 スキーマ-構造体対応情報
/order/product <= struct product {
w_char* sku <- utf2wchar | @sku;
w_char* color <- utf2wchar | @color;
int quantity <- utf2int | quantity/text();
float price <- utf2float | price/text();
};
Claims (5)
- EXI(Efficient XML(Extensible Markup Language) Interchange)ストリームをデコードするためのEXIデコーダを生成するコンピュータ装置であって、
所定のXMLスキーマで定義されたXML文書構造における箇所と、変数の名前とを互いに対応づけた対応情報を読み込む第1読み込み部と、
前記XML文書構造の各要素を表現するイベントと、EXIイベントコードと、次に用いるべき文法と、の関係を定めた複数の文法を含むEXI文法書を読み込む第2読み込み部と、
開始文法から前記EXI文法書の各文法を順次辿るように選択する文法選択部と、
前記文法を選択するごとに前記XML文書構造上の位置を特定する文法スタックを逐次更新し、更新された文法スタックが、前記対応情報で示される箇所を示すかどうかを判断する更新判定部と、
前記更新された文法スタックが前記箇所を示さないとき、選択した文法に対して前記文法スタックが示す位置に対応する前記EXIストリームの値を読み飛ばす、読み飛ばし関数を設定する、読み飛ばし関数設定部と、
前記更新された文法スタックが前記箇所を示すとき、前記文法スタックが示す位置に対応する前記EXIストリームの値を読み出して、前記箇所に対応する前記変数に与える、読み出し関数を設定する、読み出し関数設定部と、
各前記文法に対しそれぞれ選択された前記読み飛ばし関数および前記読み出し関数を含むEXIデコーダを生成するコードコンポーザと、
を備えたコンピュータ装置。 - 前記変数は、構造体の要素である
ことを特徴とする請求項1に記載のコンピュータ装置。 - 前記対応情報は、前記XML文書構造において前記箇所に対して定義された型と、前記変数の型との情報を含み、
前記読み出し関数は、読み出した値の型を前記変数の型に変換して、前記変数に与えるものである
ことを特徴とする請求項1または2に記載のコンピュータ装置。 - EXI(Efficient XML(Extensible Markup Language) Interchange)ストリームをデコードするためのEXIデコーダを生成するためのプログラムであって、
所定のXMLスキーマで定義されたXML文書構造における箇所と、変数の名前とを互いに対応づけた対応情報を読み込む第1読み込みステップと、
前記XML文書構造の各要素を表現するイベントと、EXIイベントコードと、次に用いるべき文法と、の関係を定めた複数の文法を含むEXI文法書を読み込む第2読み込みステップと、
開始文法から前記EXI文法書の各文法を順次辿るように選択する文法選択ステップと、 前記文法を選択するごとに前記XML文書構造上の位置を特定する文法スタックを逐次更新し、更新した文法スタックが、前記対応情報で示される箇所を示すかどうかを判断する更新判定ステップと、
前記更新された文法スタックが前記箇所を示さないとき、選択した文法に対して前記文法スタックが示す位置に対応する前記EXIストリームの値を読み飛ばす、読み飛ばし関数を設定する、読み飛ばし関数設定ステップと、
前記更新された文法スタックが前記箇所を示すとき、前記文法スタックが示す位置に対応する前記EXIストリームの値を読み出して、前記箇所に対応する前記変数に与える、読み出し関数を設定する、読み出し関数設定ステップと、
各前記文法に対しそれぞれ選択された前記読み飛ばし関数および前記読み出し関数を含むEXIデコーダを生成するステップと、
をコンピュータに実行させるためのプログラム。 - 請求項1ないし4のいずれか一項に従って生成された前記EXIデコーダと、前記EXI文法書を記憶する記憶部と、
前記EXIデコーダを実行する実行部と、
前記EXIストリームを受信する受信部と、を備え、
前記EXIストリームは、複数のEXIイベントコードと、前記EXIイベントコードの全部または一部にそれぞれ関連づけられた値とのシーケンスであり
前記実行部は、
前記EXIストリームの先頭から順次EXIイベントコードを特定し、前記EXIイベントコードと、事前に選択された文法とに基づき、次に用いる文法を選択し、
前記EXIイベントコードに値が関連づけられているとき、前記EXIイベントコードが特定されたときの文法に対応づけられた、前記読み飛ばし関数または前記読み出し関数により、前記値を処理し、
前記読み出し関数により取得された前記変数の値を出力する
ことを特徴とする通信機器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011070244A JP5325921B2 (ja) | 2011-03-28 | 2011-03-28 | デコーダコンパイラ、プログラムおよび通信機器 |
US13/235,880 US8700680B2 (en) | 2011-03-28 | 2011-09-19 | Decoder compiler, computer readable medium, and communication device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011070244A JP5325921B2 (ja) | 2011-03-28 | 2011-03-28 | デコーダコンパイラ、プログラムおよび通信機器 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012203826A JP2012203826A (ja) | 2012-10-22 |
JP5325921B2 true JP5325921B2 (ja) | 2013-10-23 |
Family
ID=46928680
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011070244A Expired - Fee Related JP5325921B2 (ja) | 2011-03-28 | 2011-03-28 | デコーダコンパイラ、プログラムおよび通信機器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8700680B2 (ja) |
JP (1) | JP5325921B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10019418B2 (en) * | 2012-07-20 | 2018-07-10 | Fujitsu Limited | Efficient XML interchange profile stream decoding |
JP2014086048A (ja) | 2012-10-26 | 2014-05-12 | Toshiba Corp | 検証装置、検査方法およびプログラム |
US10282400B2 (en) * | 2015-03-05 | 2019-05-07 | Fujitsu Limited | Grammar generation for simple datatypes |
US10311137B2 (en) * | 2015-03-05 | 2019-06-04 | Fujitsu Limited | Grammar generation for augmented datatypes for efficient extensible markup language interchange |
CN106844758A (zh) * | 2017-02-17 | 2017-06-13 | 安图实验仪器(郑州)有限公司 | 数据集代码生成方法 |
CN112114812B (zh) * | 2020-08-26 | 2022-09-27 | 中国船舶重工集团公司第七一六研究所 | 一种应用于工业机器人编程语言的语法检查方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2996296B2 (ja) | 1997-02-26 | 1999-12-27 | 日本電気株式会社 | メッセージ復号化装置及び有限状態機械生成装置 |
JP2004234405A (ja) * | 2003-01-31 | 2004-08-19 | Fujitsu Ltd | プロトコル符号化/復号化装置 |
JP4898405B2 (ja) * | 2006-12-01 | 2012-03-14 | キヤノン株式会社 | 文書データ処理方法、文書データ作成装置、及び文書データ処理装置 |
JP2009059215A (ja) | 2007-08-31 | 2009-03-19 | Canon Inc | 構造化文書処理装置、構造化文書処理方法 |
FR2931271B1 (fr) * | 2008-05-15 | 2012-07-27 | Canon Kk | Procede et dispositif de codage d'un document structure et procede et dispositif de decodage d'un document ainsi code |
JP5409090B2 (ja) * | 2009-04-13 | 2014-02-05 | キヤノン株式会社 | 情報処理装置、情報処理方法、プログラム及び記憶媒体 |
-
2011
- 2011-03-28 JP JP2011070244A patent/JP5325921B2/ja not_active Expired - Fee Related
- 2011-09-19 US US13/235,880 patent/US8700680B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20120254231A1 (en) | 2012-10-04 |
JP2012203826A (ja) | 2012-10-22 |
US8700680B2 (en) | 2014-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5325921B2 (ja) | デコーダコンパイラ、プログラムおよび通信機器 | |
CA2831588C (en) | Cross-compiling swf to html using an intermediate format | |
JP5325920B2 (ja) | エンコーダコンパイラ、プログラムおよび通信機器 | |
US7734091B2 (en) | Pattern-matching system | |
US20030115548A1 (en) | Generating class library to represent messages described in a structured language schema | |
JP5044942B2 (ja) | 文書分析において受付状態を決定するシステム及び方法 | |
JP2004518231A (ja) | 文書の構造化された記述を圧縮するための方法 | |
JP2006221654A (ja) | デリミタを減少させる方法及びシステム | |
US11474796B1 (en) | Build system for distributed applications | |
JP2006323821A (ja) | コンパイル済みスキーマに順次アクセスする方法とシステム | |
CN110888645A (zh) | 一种转换为小程序的方法、装置和存储介质 | |
JP2004341671A (ja) | 情報処理システム、制御方法、制御プログラム、及び記録媒体 | |
JP5044943B2 (ja) | データ文書の高速符号化方法及びシステム | |
CA2741082C (en) | Conditional processing method and apparatus | |
CN116719523A (zh) | 页面渲染方法及电子设备 | |
JP5789236B2 (ja) | 構造化文書分析方法、構造化文書分析プログラム、および構造化文書分析システム | |
CN112631604B (zh) | 一种前端框架实现方法及装置 | |
JP2005332146A (ja) | 動的コンテンツ作成プログラムの生成装置、動的コンテンツ作成プログラムを生成するためのプログラム、及び動的コンテンツ作成プログラムの生成方法 | |
JP2006221652A (ja) | 符号化文書復号方法及びシステム | |
JP2008226010A (ja) | コンパイル方法及びコンパイル装置 | |
US20100192167A1 (en) | Graphical user interface generation through use of a binary file | |
JP2008204000A (ja) | 符号化装置及びその制御方法、復号装置及びその制御方法、プログラム、記憶媒体 | |
JP2006221655A (ja) | スキーマをコンパイルする方法とシステム | |
JP2009163662A (ja) | 情報処理装置、情報処理装置の制御方法、および情報処理装置の制御プログラム | |
JP5206675B2 (ja) | 構造化文書変換装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130205 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130215 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130415 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130628 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130722 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5325921 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
LAPS | Cancellation because of no payment of annual fees |