从 RDF 到 html 的 XSLT 转换

2024-03-03

我正在尝试使用 XSLT 将 RDF 文件转换为 HTML。

我正在使用我在网上找到的模板:http://snippets.dzone.com/posts/show/1164 http://snippets.dzone.com/posts/show/1164

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:foo="http://purl.org/rss/1.0/">
    <xsl:output method="html"/>
    <xsl:template match="/">
        <xsl:apply-templates select="/rdf:RDF/foo:channel"/>
    </xsl:template>
    <xsl:template match="/rdf:RDF/foo:channel">
        <h3><xsl:value-of select="foo:title"/></h3>
        <p><xsl:value-of select="foo:description"/></p>
        <ul>
            <xsl:apply-templates select="/rdf:RDF/foo:item"/>
        </ul>
    </xsl:template>
    <xsl:template match="/rdf:RDF/foo:item">
        <li>
            <a href="{foo:link}" title="{substring(dc:date, 0, 11)}"><xsl:value-of select="foo:title"/></a>
            <p><xsl:value-of select="foo:description" disable-output-escaping="yes" /></p>
        </li>
    </xsl:template>
</xsl:stylesheet>

它与 RDF 文件完美配合,如下所示: (这里是link到完整文件)http://dl.dropbox.com/u/2232733/rdfexample.xml http://dl.dropbox.com/u/2232733/rdfexample.xml

<?xml version="1.0" encoding="utf-8"?><!-- generator="wordpress/1.2" -->
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:dcterms="http://purl.org/dc/terms/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
>
<channel rdf:about="http://www.wasab.dk/morten/blog/rdf">
    <title>Binary Relations</title>
    <link>http://www.wasab.dk/morten/blog</link>
    <description>Reflections on the web</description>
    <dc:language>en</dc:language>
    <dc:date>2004-05-29T23:02:37Z</dc:date>
    <admin:generatorAgent rdf:resource="http://wordpress.org/?v=1.2"/>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>
    <items>
<rdf:Seq>
<rdf:li rdf:resource="http://www.wasab.dk/morten/blog/archives/2004/05/30/wordpress-plugin-linkifier"/>
...
<rdf:li rdf:resource="http://www.wasab.dk/morten/blog/archives/2004/05/20/yet-another-semweb-blogger"/>
</rdf:Seq>
</items>
</channel>
<item rdf:about="http://www.wasab.dk/morten/blog/archives/2004/05/30/wordpress-plugin-linkifier">
    <title>WordPress Plugin: Linkifier</title>

但是,我无法使其适用于从 lastfm.rdfize.com/ 获得的 RDF\XML: (这里是link对于文件)http://dl.dropbox.com/u/2232733/metalica_rdf_xml.xml http://dl.dropbox.com/u/2232733/metallica_rdf_xml.xml

它有不同的结构,我不知道我应该使用 XSTL 中的哪些标签来从中生成 HTML:

rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:terms="http://purl.org/dc/terms/"
  xmlns:foaf="http://xmlns.com/foaf/0.1/"
  xmlns:owl="http://www.w3.org/2002/07/owl#"
  xmlns:mo="http://purl.org/ontology/mo/"
  xmlns:ov="http://open.vocab.org/terms/"
  xmlns:event="http://purl.org/NET/c4dm/event.owl#"
  xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
  xmlns:v="http://www.w3.org/2006/vcard/ns#">

  <rdf:Description rdf:about="http://lastfm.rdfize.com/artists/Metallica">
    <rdf:type rdf:resource="http://purl.org/ontology/mo/MusicArtist"/>
    <rdfs:label>Metallica</rdfs:label>
  ...

所以我的问题是 - 我应该如何形成 XSLT 来处理我的 RDF? 提前致谢!


您的主要问题是您的样式表过于特定于领域。 RDF/XML 是一种非常复杂的序列化,它允许多种方式来表述事物。您的样式表引用了非常具体的元素名称,这些名称仅在非常狭窄的 RDF/XML 文档范围内有效,例如

<xsl:template match="/rdf:RDF/foo:item">

以上尝试匹配根级别<rdf:RDF>实际上不是强制性的元素 - 使用替代根元素或用于<rdf:RDF>嵌入到其他 XML 元素中,前提是只有一个元素。

然后它尝试匹配<foo:item>element 是文档特定的 ID,该元素名称绝对可以是一般文档中的任何名称<rdf:Description>到前面的例子。

Solution

Don't尝试使用样式表转换 RDF/XML,因为您编写的任何可以转换全部 RDF/XML 文档的样式表总是会极其复杂,毫无意义。

Instead为自己找到一个好的 RDF 库(大多数主要语言都有一个或多个),它提供了 RDF/XML 解析器和 HTML 或 HTML+RDFa 编写器,并使用它们。如果您想控制 HTML 输出作为基础,请使用库的 HTML 编写器作为指南并对其进行调整,或者仅在其输出上应用 CSS 样式表。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 RDF 到 html 的 XSLT 转换 的相关文章

  • 如何使用 PHP 跳过 XML 文件中的无效字符

    我正在尝试使用 PHP 解析 XML 文件 但收到错误消息 解析器错误 字符 0x0 超出允许范围 我认为这是因为 XML 的内容 我认为有一个特殊符号 我能做些什么来修复它 我还得到 解析器错误 标签项行中数据过早结束 可能是什么原因导致
  • 将 XML 反序列化为对象数组

    我正在尝试将 XML 文件反序列化为对象数组 但收到空对象 我的问题看起来与此类似 如何将 xml 反序列化为对象数组 https stackoverflow com questions 7541899 how to deserialize
  • 在解析之前使用 lxml 注册命名空间

    我正在使用 lxml 从具有命名空间的外部服务解析 XML 但未将它们注册到xmlns 我正在尝试手动注册它register namespace 但这似乎不起作用 from lxml import etree xml
  • XSLT,查找最后一个子节点是否是特定元素

    看下面两个例子
  • Firefox 不再解释 XSLT-1.0

    我使用 XSLT 将大量数据保存在 XML 文件中 以便在 Firefox 中正确显示内容 但从今天开始 Firefox 不再解释 XSLT 并显示白色页面或块中的数据 我当前的 Firefox 版本是 68 0 64 位 新版本中的 XS
  • XPath 获取没有父节点的所有子节点(元素、注释和文本)

    我需要一个 XPath 来获取所有没有父元素的子节点 包括文本元素 注释元素和子元素 任何帮助 示例示例
  • 无法在 PowerShell 中完全解析 XML

    我有一个 XML 文件 我想解析该文件并检索特定信息 为了便于理解 下面是 XML 文件的屏幕截图 我想解析 XML 并为每个Item节点 检索屏幕截图中指示的字段 检索到的每个值都需要针对每个项目节点进行格式化 最后 我希望能够指定一个要
  • jQuery:评估 ajax 响应中的脚本

    来自我的 web 应用程序的 XML 响应既有要添加到页面的 HTML 也有要运行的脚本 我正在尝试从我的网络应用程序发回 XML 例如
  • PHP DOMDocument 中 XML 内 HTML 表的 Xpath 查询

    我有一个具有以下树结构的 XML 文件
  • XSLT 分组/合并子项(使用密钥)

    我试图了解如何使用我已经编写的代码推导出解决方案 为了简化起见 我将首先解释我想要做什么以及到目前为止我得到了什么 假设我在 XSLT 中有一个 XML 变量 其中包含几个具有相同标题属性的节点 Using Dimitre Novatche
  • XDocument.Save() 删除我的 实体

    我编写了一个工具来使用 C 和 Linq to XML 修复一些 XML 文件 即插入一些缺失的属性 值 该工具将现有 XML 文件加载到 XDocument 对象中 然后 它向下解析节点以插入丢失的数据 之后 它调用 XDocument
  • 从 org.w3c.dom.Node 获取 Xpath

    我可以从 org w3c dom Node 获取完整的 xpath 吗 假设当前节点指向 xml 文档中间的某个位置 我想提取该元素的 xpath 我正在寻找的输出 xpath 是 parent child1 chiild2 child3
  • 使用 PHP 将子项添加到 XML 文件

    添加子项时 抛出此错误 无法添加孩子 父级不是 XML 树的永久成员 我无法解决这个问题 这是我的代码 if visited FIRST xml new SimpleXMLElement
  • 不明确的 XML 模式

    我正在尝试为 XML 生成一个非常简单的 XML 架构 类似于以下内容
  • 如何将 Xml 文件转换为文本文件 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有大约 8000 个 xml 文件需要转换为文本文件 文本文件必须包含 xml 文件的标题 描述和关键字 不含标签 并删除其他元素和
  • jQuery - xpath 查找?

    如果您在 xml 中有下面的 xml 那么您会使用以下命令变得昏昏欲睡 xml find animal find dog find beagle text jQuery 中是否有类似的方法来使用 xpath xml xpathfind an
  • magento 删除管理菜单项

    在magento中 是否可以删除管理中的菜单项 我有一个新模块 并将评论和评级拉到一个新部分 我不反对将它们也留在目录部分 但如果可能 并且干净 我想将其从那里删除 将下一行添加到扩展 config xml 文件
  • 将 XML 数据提取到 php [重复]

    这个问题在这里已经有答案了 我正在尝试从 XML 文件中提取数据 http freegeoip net xml google com http freegeoip net xml google com 您可以看到该文件的内容类似于
  • 在 PHP 中验证约 400MB 的大型 XML 文件

    我有一个很大的 XML 文件 大约 400MB 在开始处理之前我需要确保它的格式正确 我尝试的第一件事是类似于下面的内容 这很棒 因为我可以找出 XML 是否格式不正确以及 XML 的哪些部分 不好 doc simplexml load s
  • xml 拉解析器资产 xml

    如何使用拉解析器解析资产文件夹中的本地 XML 文件 我无法让拉解析器工作 它总是抛出 io 异常 我想我无法获取文件的路径或连接到该文件 mixm 我正在尝试各种方法来从 资产 和 资源 加载本地文件 但要按要求回答您的问题 因为其他人似

随机推荐

  • 如何(可移植地)使用 C++ 类层次结构和动态链接库

    好吧 我知道可移植性不是 C 的强项 但我必须让我的代码在 Mac 和 Windows 上运行 我已经提出了一种解决方案 但它并不完美 我有兴趣看看是否有人可以提出更好的解决方案 我需要在多个 DLL 包中使用类层次结构 例如 我有一个抽象
  • iOS 6 视图加载期间的设备方向处理?

    我有一个标签栏应用程序 我使用的是 XCode 4 3 3 我已经升级到 4 5 2 带有 iOS6 的东西 我的代码在shouldAutorotateToInterfaceOrientation每个视图都会检查当前设备方向并正确放置所有
  • 如何在 XAML 中构建控件网格?

    我正在尝试按照规范在 WPF 中构建 UI UI 用于编辑项目集合 每个项目都有一个可编辑的字符串属性 以及 UI 需要显示的可变数量的只读字符串 它可能看起来像这样 或者 根据数据 可能有不同数量的文本标签列 文本列的数量是完全可变的 可
  • 由于通道 url 不兼容,设备未接收 C# Windows 推送通知

    经过几个小时的试用 我仍然无法向我的应用程序发送推送通知 这就是我到目前为止所做的 激活服务于https appdev microsoft com 得到了SID 我们调用它ms app s 1 23 4 12345678901 123456
  • GCC 值得在 Windows 上使用来替代 MSVC 吗?

    我目前在 Windows 上使用 Visual Studio 2010 使用 C 进行开发 在 C 11 正式发布后 我开始使用 MSVC 中已经提供的一些功能 但是 正如预期的那样 绝大多数新更改都不受支持 我想也许即将推出的 Visua
  • Javascript 是“缓存”操作吗?

    我正在用 Javascript 实现 Levenshtein 距离函数 我想知道用维基百科的示例 星期日 和 星期六 运行它需要多少时间 所以我用了console time and console timeEnd 以确定函数执行所花费的时间
  • 水晶报表 - 最后一页为空白

    我有一个水晶报告 生成时最后一页是空白的 除了页脚 指示当前页面以及报告标题 仅当倒数第二页上显示的数据完全填满页面时才会发生这种情况 有人知道为什么会这样吗 当您选中复选框时新页面之后 您会看到一个图标就在它旁边 这个图标代表配方工作坊
  • 从 AngularJS 中的两个资源调用返回 $promise 以延迟路由更改

    Use Case 使用路由提供程序 在解析中返回 promise 将避免 UI 加载后弹出数据 但是 我在处理两个不同的资源调用并将其作为单个数组返回时遇到问题 目前的实施 当前的实现有效 但要求控制器需要两个资源 var app angu
  • 无法使用 MAVEN 进行构建,出现错误 - 无法执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.1:compile

    我一直在尝试使用maven 构建代码 但我遇到了一个错误 该代码可在此 github 存储库中找到 谷歌播放爬虫 https github com Akdeniz google play crawler 我的maven显示的系统配置如下 A
  • 如何修改Solr给出的搜索结果页面?

    我打算做一个利基搜索引擎 我使用 apache nutch 1 6 作为爬虫 使用 apache solr 3 6 2 作为搜索器 我必须说 网络上有关这些技术的更新信息非常少 我按照这个教程http wiki apache org nut
  • ServletContext getRealPath 方法 - 什么是虚拟路径?

    我正在阅读的文档getRealPath String s http docs oracle com javaee 5 api javax servlet ServletContext html getRealPath 28java lang
  • 如何更改日期选择器中的日期格式

    在我的 iPhone 应用程序中 我需要显示日期yyyy MM dd格式如下图所示 但在 iPhone 日期选择器中 它的格式为月 日 年这对于我的申请来说不统一 我尝试更改日期选择器的本地值 不同国家 地区 但仍以默认格式使用它 如何根据
  • 如何在 Angular 5 中的应用程序范围启动时加载列表(http 调用)?

    我希望在启动时加载数据 例如使用 LocationsService 的国家 地区 我已经实现了当前的服务 Injectable export class LocationsService public countries Country c
  • HttpContext.Current.User.Identity.IsAuthenticated 返回 false

    我有一个奇怪的问题 我有一个包含以下代码的页面 if HttpContext Current User Identity IsAuthenticated Server Transfer Views Public Unauthorised a
  • 不幸的是 已停止

    我有一个应用程序 用户以表单提交一些数据 然后将其发送到服务器 我正在平板电脑和 Android 智能手机 Galaxy S2 上对其进行测试 在平板电脑上 一旦我单击 提交 应用程序就会停止工作 并显示消息 不幸的是已停止工作 这个问题在
  • 在没有模块的情况下访问 JDK 11 中的“sun.security.x509”?

    tl 博士在最后 我们有一个生成自签名 SSL 证书的小方法 它显然取决于sun security x509 因此 目前我们仍在使用 JDK8 构建它 尽管代码库的其余部分 它只是一个小型的单个库 是使用 JDK11 构建并使用 JVM11
  • 创建不带输入文本框的复制按钮

    我需要一些 JavaScript 来制作一些文本 以便在您单击按钮时复制您的剪贴板 我已在下面附加了按钮 HTML 注意 我有多个按钮
  • TFS:将一个分支中本地完成的更改提交到另一个分支

    我对很多文件进行了更改 同时我想我宁愿将这些未经测试的代码提交到尚未创建的分支 这样现有代码库的用户就不会受到影响 由于我接触了很多很多文件并创建和添加了新的子项目等 我想避免手动复制文件和文件夹 在 Visual Studio 中完成此操
  • 从命令行调用 python 脚本而不先输入“python”

    问题 在命令行中 如何调用 python 脚本而无需键入python在脚本名称前面 这可能吗 Info 我编写了一个方便的脚本 用于从命令行访问 sqlite 数据库 但我有点不喜欢键入 python SQLsap args 而宁愿只键入
  • 从 RDF 到 html 的 XSLT 转换

    我正在尝试使用 XSLT 将 RDF 文件转换为 HTML 我正在使用我在网上找到的模板 http snippets dzone com posts show 1164 http snippets dzone com posts show