DITA中有两种"通用"类型的元数据标签,数据元素和关键字元素.当然也有其他的,但显然应该很快就会被弃用,无论如何,这个名字暗示它是最后的手段.
因此,关键字看起来与Web应用程序中的标签非常相似,即通常用于"folksonomies"的内容.但是数据和关键字之间的确切区别是什么?何时应该使用哪个?
我正在开发一个需要从持久存储(可能是JCR)处理DITA文档的Web应用程序.该DITA开放工具包是唯一的DITA实现我所知道的,但它需要您所有的文件到文件系统中存在.理想情况下,我喜欢像DITA OT一样的东西,但允许你提供一个解析器(很像XSLT URIResolver)来从其他来源提取引用的内容.
如果人们有其他想法,比如使用虚拟文件系统来欺骗DITA OT,我也很乐意听到.谢谢!
编辑:我忘了在原帖中提到我正在寻找一个开源解决方案,因为这是针对在教育社区许可下发布的项目.
如果我os.path.isfile("foo.txt")用来检查名为 的文件Foo.txt,该函数将True在不区分大小写的文件系统和 Windows 上返回。但是,它在区分大小写的文件系统上返回 False。有没有办法强制对大小写isfile()敏感的文件系统进行不区分大小写的检查?我知道有一种方法可以在 Windows 上强制此函数区分大小写,但反过来呢?
背景
我正在处理 DITA 内容。如果您在 Windows 上开发 DITA 内容并将您的内容部署到区分大小写的 Linux 服务器,如果您的 href 属性包含与实际目标文件大小写不同的字符,则最终可能会导致主题之间的链接断开。我正在尝试制作一个脚本,它遍历我们 DITA 源中不是外部链接的每个 href 属性,并更新它以匹配实际文件的大小写。我可以使用 beautifulsoup 模块获取 href 属性,但是我很难弄清楚如何检查和验证实际文件名,以便我可以使用该字符串来更新我的 DITA 源中的 href 属性。
一种更严厉的方法是将每个 href 及其目标文件转换为小写,但如果外部站点有指向您的内容的链接并且它们已经具有正确的大小写,这可能会导致不同的问题。
isfile() 函数可能不是这项工作的正确工具,但它只是一个开始。我想我总是可以在 Windows 上运行这个脚本,但这不是很优雅。最好让脚本在大多数系统上正常运行。
我正在使用 VS Code 和“Red Hat 的 XML 语言支持”。我指向 DITA OT 目录内的目录文件dita-ot-3.3.3\catalog-dita.xml。我的 DITA 文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "http://docs.oasis-open.org/dita/v1.1/OS/dtd/task.dtd">
<task>
<title>Running the converter</title>
<steps>
<step>
<cmd>Run the following command:</cmd>
</step>
</steps>
</task>
Run Code Online (Sandbox Code Playgroud)
但我收到如下错误:
Element type "task" must be declared.xml(MSG_ELEMENT_NOT_DECLARED)
Run Code Online (Sandbox Code Playgroud)
所以它正在读取某些内容,但无法正常工作。我使用了错误的目录文件吗?我的文件声明有误吗?
顺便说一句:我有 Oxygen XML 编辑器,如果我需要高级功能,我可以使用它。我希望在编码时使用 VS Code 进行偶尔的小编辑,而无需启动 Oxygen。
我正在使用DITA生成用户文档,并生成PDF和XHTML可交付成果.我可以使用哪种DITA元素嵌入YouTube视频?
理想情况下,我更喜欢使用样式表生成嵌入代码,并以某种方式在文档中添加视频链接.以下是我设想这样一个元素可能使用伪标记的方式:
<fig audience="web">
<title>YouTube 101: How to Find What's Hot on YouTube</title>
<video href="http://www.youtube.com/watch?feature=player_embedded&v=FEyRza0rJyI">
<alt>This video explains how to tap into the cultural zeitgeist happening on YouTube right now.</alt>
</video>
</fig>
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我宁愿使用其中一个标准DITA元素来实现这一目标.
DITA 中的 subjectScheme 是创建元数据分类的合适格式,但应该如何使用它呢?具体来说,我的问题涉及以下方面:
我是一名技术作家,正在使用DITA编写通用业务流程标准.我选择了DITA,因为它的主题,内容参考和有条件的分析,所有这些都将帮助我控制我的复杂,相互关联的文档的优异组装的使用.
我需要选择要使用的主题类型.
我有三个选择:
选项1是不现实的,因为我无法访问DITA开发人员.另外,即使伪代码设计专业化也不是一件容易的事.
这使得选项2和3成为现实.
选项2让我使用主题主题.这给了我灵活性,因为它是最宽容的主题类型.它也是最"干净"的,因为我没有使用为其他东西设计的主题类型.然而,主题主题实际上是专业化的基础,不应该直接使用.
选项3让我使用计算机文档主题.我可以或多或少地让我的内容适合他们.但是,它们实际上是用于以特定方式编写的"tripane help"类型的内容.例如,这些主题类型通常用于根据John Carroll的极简主义进行编写,该极简主义鼓励用户进行实验,并专注于用户的任务.我的文件要求提出要求,我不想在写作中鼓励极简主义原则.
选项2和3都涉及妥协.编写流程标准的两个中哪个更好?
我需要获取包含特定属性的标签列表.我正在使用DITA xml,我需要找出所有具有href属性的标签.
这里的问题是属性可能在任何标记内,因此XPath在这种情况下不起作用.例如,图像标签可以包含href,topicref标签可以包含href,等等.
所以我需要得到一个XmlNodeList(由getElementByTagName方法返回).理想情况下,我需要一个getElementByAttributeName应该返回的方法XmlNodeList.
我正在使用DITA Open Toolkit 1.7和RenderX XEP将DITA映射转换为PDF.在DITA主题中,使用conrefs插入产品名称.我的一个产品名称很长.在表中使用时会导致布局问题.因此,我在通过conref重用的短语中插入了一个软连字符:
<ph id="PD_FineReader2Comp">DOXiS4 FineReader2­Components</ph>
Run Code Online (Sandbox Code Playgroud)
这在生成的页面中很好地工作,但在书签中创建了一个问题,其中显示符号代替软连字符.

显然,这是一个编码问题.似乎在PDF内容中正确处理了UTF-8字符,但在PDF书签中没有,根据以下来源,可以使用一些PDF-16字符(但我不明白哪些字符).
DITA Open Toolkit似乎使用此代码片段从主题标题创建书签:
<fo:bookmark>
<xsl:attribute name="internal-destination">
<xsl:call-template name="generate-toc-id"/>
</xsl:attribute>
<xsl:if test="$bookmarkStyle!='EXPANDED'">
<xsl:attribute name="starting-state">hide</xsl:attribute>
</xsl:if>
<fo:bookmark-title>
<xsl:value-of select="normalize-space($topicTitle)"/>
</fo:bookmark-title>
<xsl:apply-templates mode="bookmark"/>
</fo:bookmark>
Run Code Online (Sandbox Code Playgroud)
XSL样式表的版本为2.0.
我想创建一个删除违规字符的覆盖.我怎样才能做到这一点?
我开始使用DITA编写产品规格.我使用"prodname"元数据将产品编号放在标题中.现在我想知道如果我可以在我的文档的正文部分使用相同的信息.是否有DITA方式将此信息用于我的目的?或者这不是"正确"的用法?