Kaydet (Commit) 9fed38e7 authored tarafından Michael Stahl's avatar Michael Stahl

odfmetadata4: #i110033#: API change: remove rdfs:label statements for RDFa.

 css.rdf.XDocumentRepository: method getStatementRDFa() also returns a bool.
 librdf_repository:
   setStatementRDFa() no longer generates the rdfs:label statement.
   getStatementRDFa() no longer handles the rdfs:label statement.
   add a set to store elements with xhtml:content.
 RDFaExportHelper:
   adapt export to new getStatementRDFa() and lack of rdfs:label statement.
üst 3ccd714e
...@@ -53,8 +53,6 @@ private: ...@@ -53,8 +53,6 @@ private:
::com::sun::star::uno::Reference< ::com::sun::star::uno::Reference<
::com::sun::star::rdf::XDocumentRepository> m_xRepository; ::com::sun::star::rdf::XDocumentRepository> m_xRepository;
::rtl::OUString m_RDFsLabel;
typedef ::std::map< ::rtl::OUString, ::rtl::OUString > typedef ::std::map< ::rtl::OUString, ::rtl::OUString >
BlankNodeMap_t; BlankNodeMap_t;
......
...@@ -95,11 +95,6 @@ RDFaExportHelper::RDFaExportHelper(SvXMLExport & i_rExport) ...@@ -95,11 +95,6 @@ RDFaExportHelper::RDFaExportHelper(SvXMLExport & i_rExport)
OSL_ENSURE(xRS.is(), "AddRDFa: model is no rdf::XRepositorySupplier"); OSL_ENSURE(xRS.is(), "AddRDFa: model is no rdf::XRepositorySupplier");
if (!xRS.is()) throw uno::RuntimeException(); if (!xRS.is()) throw uno::RuntimeException();
m_xRepository.set(xRS->getRDFRepository(), uno::UNO_QUERY_THROW); m_xRepository.set(xRS->getRDFRepository(), uno::UNO_QUERY_THROW);
const uno::Reference<rdf::XURI> xLabel(
rdf::URI::createKnown(m_rExport.GetComponentContext(),
rdf::URIs::RDFS_LABEL));
m_RDFsLabel = xLabel->getStringValue();
} }
::rtl::OUString ::rtl::OUString
...@@ -128,19 +123,21 @@ RDFaExportHelper::AddRDFa( ...@@ -128,19 +123,21 @@ RDFaExportHelper::AddRDFa(
{ {
try try
{ {
uno::Sequence<rdf::Statement> stmts( beans::Pair< uno::Sequence<rdf::Statement>, sal_Bool > const
m_xRepository->getStatementRDFa(i_xMetadatable) ); RDFaResult( m_xRepository->getStatementRDFa(i_xMetadatable) );
uno::Sequence<rdf::Statement> const & rStatements( RDFaResult.First );
if (0 == stmts.getLength()) if (0 == rStatements.getLength())
{ {
return; // no RDFa return; // no RDFa
} }
// all stmts have the same subject, so we only handle first one // all stmts have the same subject, so we only handle first one
const uno::Reference<rdf::XURI> xSubjectURI(stmts[0].Subject, const uno::Reference<rdf::XURI> xSubjectURI(rStatements[0].Subject,
uno::UNO_QUERY);
const uno::Reference<rdf::XBlankNode> xSubjectBNode(stmts[0].Subject,
uno::UNO_QUERY); uno::UNO_QUERY);
const uno::Reference<rdf::XBlankNode> xSubjectBNode(
rStatements[0].Subject, uno::UNO_QUERY);
if (!xSubjectURI.is() && !xSubjectBNode.is()) if (!xSubjectURI.is() && !xSubjectBNode.is())
{ {
throw uno::RuntimeException(); throw uno::RuntimeException();
...@@ -154,47 +151,31 @@ RDFaExportHelper::AddRDFa( ...@@ -154,47 +151,31 @@ RDFaExportHelper::AddRDFa(
.makeStringAndClear() .makeStringAndClear()
); );
rdf::Statement* const iter const uno::Reference<rdf::XLiteral> xContent(
( ::std::partition( ::comphelper::stl_begin(stmts), rStatements[0].Object, uno::UNO_QUERY_THROW );
::comphelper::stl_end(stmts), const uno::Reference<rdf::XURI> xDatatype(xContent->getDatatype());
::boost::bind(&::rtl::OUString::equals, m_RDFsLabel, if (xDatatype.is())
::boost::bind(&rdf::XNode::getStringValue,
::boost::bind(&rdf::Statement::Predicate, _1))) ) );
if (iter != ::comphelper::stl_end(stmts))
{ {
// from iter to end, all stmts should have same object const ::rtl::OUString datatype(
const uno::Reference<rdf::XLiteral> xContent( makeCURIE(&m_rExport, xDatatype) );
(*iter).Object, uno::UNO_QUERY_THROW ); m_rExport.AddAttribute(XML_NAMESPACE_XHTML,
const uno::Reference<rdf::XURI> xDatatype(xContent->getDatatype()); token::XML_DATATYPE, datatype);
if (xDatatype.is())
{
const ::rtl::OUString datatype(
makeCURIE(&m_rExport, xDatatype) );
m_rExport.AddAttribute(XML_NAMESPACE_XHTML,
token::XML_DATATYPE, datatype);
}
if (iter != ::comphelper::stl_begin(stmts)) // there is rdfs:label
{
m_rExport.AddAttribute(XML_NAMESPACE_XHTML, token::XML_CONTENT,
xContent->getValue());
}
} }
else if (RDFaResult.Second) // there is xhtml:content
{ {
OSL_ENSURE(false,"invalid RDFa: every property is rdfs:label"); m_rExport.AddAttribute(XML_NAMESPACE_XHTML, token::XML_CONTENT,
return; xContent->getValue());
} }
::rtl::OUStringBuffer property; ::rtl::OUStringBuffer property;
::comphelper::intersperse( ::comphelper::intersperse(
::boost::make_transform_iterator( ::boost::make_transform_iterator(
iter, // omit RDFsLabel predicates! ::comphelper::stl_begin(rStatements),
::boost::bind(&makeCURIE, &m_rExport, ::boost::bind(&makeCURIE, &m_rExport,
::boost::bind(&rdf::Statement::Predicate, _1))), ::boost::bind(&rdf::Statement::Predicate, _1))),
// argh, this must be the same type :( // argh, this must be the same type :(
::boost::make_transform_iterator( ::boost::make_transform_iterator(
::comphelper::stl_end(stmts), ::comphelper::stl_end(rStatements),
::boost::bind(&makeCURIE, &m_rExport, ::boost::bind(&makeCURIE, &m_rExport,
::boost::bind(&rdf::Statement::Predicate, _1))), ::boost::bind(&rdf::Statement::Predicate, _1))),
::comphelper::OUStringBufferAppender(property), ::comphelper::OUStringBufferAppender(property),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment