* RDF [#r2d9f3ca] Writer ドキュメントの要素にメタデータを付加できます。データは ODT ドキュメント中のされた RDF 形式のファイルに保存されます。詳しくは [[OOoBasic/Generic/RDF]] を参照。 Writer ドキュメントの要素にメタデータを付加できます。データは ODT ドキュメント中のされた RDF 形式のファイルに保存されます。詳しくは [[OOoBasic/Generic/RDF]] を参照。3.2 以降。 Writer ドキュメント中の多くの要素にメターデータを付加できます。また、メタデータを付加することが前提の要素もあります。 #contents ** MetadataField フィールド [#b44973fc] Writer ドキュメントに挿入できる MetadataField フィールドはユーザーは UI から挿入できません。拡張機能やマクロから利用するためのものとなっています。 *** MetadataField フィールドの挿入 [#ra2c1f91] 次のようにしてフィールドを挿入、フィールドの内容を設定します。 #code(basic){{ Sub CreateMetadataField_1 oDoc = ThisComponent oText = oDoc.getText() oCursor = oText.createTextCursor() oMetaField = oDoc.createInstance(_ "com.sun.star.text.textfield.MetadataField") oText.insertTextContent(oCursor, oMetaField, False) oMetaField.setString("hoge") BASE_TYPE = "http://mytools.text/sidenotes/v1.0" TYPE_NAME = "SidenotesSettings" FILE_NAME = "mytools_text_sidenotes/settings.rdf" type_name = BASE_TYPE + "/" + TYPE_NAME type_uri = com.sun.star.rdf.URI.create(type_name) graph_name = oDoc.addMetadataFile(FILE_NAME, Array(type_uri,)) repo = oDoc.getRDFRepository() named_graph = repo.getGraph(graph_name) value_uri = com.sun.star.rdf.URI.createKnown(_ com.sun.star.rdf.URIs.RDF_VALUE) oLiteral = com.sun.star.rdf.Literal.create("Sometimes hoge is used...") named_graph.addStatement(oMetaField, value_uri, oLiteral) End Sub }} このコードを実行すると ODT ファイル内の mytools_text_sidenotes/settings.rdf ファイルに以下の内容が作成されます。 #code(xml){{ <?xml version="1.0" encoding="utf-8"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="../content.xml#id449299165"> <rdf:value>Sometimes hoge is used...</rdf:value> </rdf:Description> </rdf:RDF> }} *** MetadataField のメタデータを読み込む [#c170f512] 次のようにしてこのデータを読み込むことができます。 #code(basic){{ Sub Main oDoc = ThisComponent oText = oDoc.getText() oController = oDoc.getCurrentController() oViewCursor = oController.getViewCursor() oCursor = oText.createTextCursorByRange(oViewCursor) oContent = oCursor.NestedTextContent If NOT IsNull(oContent) Then If oContent.supportsService(_ "com.sun.star.text.textfield.MetadataField") Then BASE_TYPE = "http://mytools.text/sidenotes/v1.0" TYPE_NAME = "SidenotesSettings" type_name = BASE_TYPE + "/" + TYPE_NAME type_uri = com.sun.star.rdf.URI.create(type_name) value_uri = com.sun.star.rdf.URI.createKnown(com.sun.star.rdf.URIs.RDF_VALUE) graph_names = oDoc.getMetadataGraphsWithType(type_uri) If NOT IsNull(graph_names) Then If UBound(graph_names) >= 0 Then graph_name = graph_names(0) repo = oDoc.getRDFRepository() oNamedGraph = repo.getGraph(graph_name) oStatements = oNamedGraph.getStatements(oContent, value_uri, Null) While oStatements.hasMoreElements() msgbox oStatements.nextElement().Object.StringValue WEnd End If End If End If End If End Sub }} |