RDF 
Writer ドキュメントの要素にメタデータを付加できます。データは ODT ドキュメント中のされた RDF 形式のファイルに保存されます。詳しくは OOoBasic/Generic/RDF を参照。3.2 以降。
Writer ドキュメント中の多くの要素にメターデータを付加できます。また、メタデータを付加することが前提の要素もあります。
MetadataField フィールド 
Writer ドキュメントに挿入できる MetadataField フィールドはユーザーは UI から挿入できません。拡張機能やマクロから利用するためのものとなっています。
MetadataField フィールドの挿入 
次のようにしてフィールドを挿入、フィールドの内容を設定します。
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| | 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 ファイルに以下の内容が作成されます。
0
1
2
3
4
| <?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 のメタデータを読み込む 
次のようにしてこのデータを読み込むことができます。
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| | 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
|