Top > OOoBasic > Writer > RDF

RDF Edit

Writer ドキュメントの要素にメタデータを付加できます。データは ODT ドキュメント中のされた RDF 形式のファイルに保存されます。詳しくは OOoBasic/Generic/RDF を参照。3.2 以降。

Writer ドキュメント中の多くの要素にメターデータを付加できます。また、メタデータを付加することが前提の要素もあります。

MetadataField フィールド Edit

Writer ドキュメントに挿入できる MetadataField フィールドはユーザーは UI から挿入できません。拡張機能やマクロから利用するためのものとなっています。

MetadataField フィールドの挿入 Edit

次のようにしてフィールドを挿入、フィールドの内容を設定します。

  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 のメタデータを読み込む Edit

次のようにしてこのデータを読み込むことができます。

  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

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes