Top > OOoBasic > Writer > RDF

* 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
}}

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