在我的源XML中,小于号表示为<
,但在输出(html,作为alt-text)中,它表示为<
符号,这会导致问题后期处理。
我在这个命令行中使用saxon655:
java -cp saxon655/saxon.jar com.icl.saxon.StyleSheet test.xml test.xsl
这对我来说真的没有意义。以下是详细信息:
DocBook XML:
<chapter xmlns="http://docbook.org/ns/docbook">
<info><title>The Chapter</title></info>
<para>
<informalequation>
<mediaobject>
<imageobject>
<imagedata fileref="images/g0589.png" />
</imageobject>
<textobject role="tex"><phrase>|z_ s-z_ t|<r</phrase></textobject>
</mediaobject>
</informalequation>
</para>
</chapter>
XSLT。如果您复制它,请更改docbook样式表的路径。
<xsl:stylesheet version="1.0"
xmlns:d="http://docbook.org/ns/docbook"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="/path/to/docbook/xsl-1.78.1/html/docbook.xsl" />
<xsl:template match="d:mediaobject/d:imageobject/d:imagedata">
<xsl:element name="img">
<xsl:attribute name="alt">
<xsl:value-of select="../../d:textobject[@role='tex']/d:phrase" />
</xsl:attribute>
<xsl:attribute name="src">
<xsl:value-of select="@fileref" />
</xsl:attribute>
</xsl:element>
<xsl:apply-templates />
</xsl:template>
</xsl:stylesheet>
结果HTML部分:
<div class="informalequation">
<div class="mediaobject">
<img alt="|z_ s-z_ t|<r" src="images/g0589.png"></div>
</div>
我做错了吗?
答案 0 :(得分:1)
就W3C HTML验证器而言,对于text / html输出没问题,我创建了一个最小的HTML 4.01文档,其中包含http://home.arcor.de/martin.honnen/html/test2015040301.html处的标记,它有内容
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>img alt attribute test</title>
</head>
<body>
<div class="informalequation">
<div class="mediaobject">
<img alt="|z_ s-z_ t|<r" src="images/g0589.png"></div>
</div>
</body>
</html>
并且验证器说(http://validator.w3.org/check?uri=http%3A%2F%2Fhome.arcor.de%2Fmartin.honnen%2Fhtml%2Ftest2015040301.html&charset=%28detect+automatically%29&doctype=Inline&group=0)“此文档已成功检查为HTML 4.01 Strict!”。所以我认为Saxon正在创建正确的HTML,我不知道你如何对XSLT转换的结果进行后处理,但HTML或SGML解析器应该可以正常使用它。
使用XML输出(method="xml"
),Saxon确实逃避了少于属性值。