xslt 1.0を使用して、xhtmlファイルを操作します。しかし、私は同じコピーから始めたかったのです。驚いたことに、xslは元のファイルにはなかった属性を追加します。この現象を説明してください。ソースファイルと結果ファイルを比較しやすくするために、むしろ避けたいと思います。
xsltprocとmsxslの両方を試しました。変わりはない。すべての要素を取得rowspan
してcolspan
追加します。td
入力:
<?xml version="1.0" encoding="windows-1250" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<title>Anything</title>
</head>
<body>
<table>
<tr><td class="skl" >test</td><td class="kwota" >1 800,00</td></tr>
</table>
</body>
</html>
xslt:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
>
<xsl:output method="xml"
omit-xml-declaration="no"
encoding="windows-1250"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates
select="node()|@*|processing-instruction()|comment()" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
そして、唯一の違いはこの行です:
<tr><td class="skl" rowspan="1" colspan="1">test</td><td class="kwota" rowspan="1" colspan="1">1 800,00</td></tr>
dtdに対するソースファイルの検証では、エラーは表示されません。これらの属性をソースファイルに挿入して問題を回避することはできますが、この混乱の原因について知りたいです。
編集: http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
からダウンロードした(20秒の遅延で)元のdtdを使用し
ます
<!ATTLIST td
%attrs;
abbr %Text; #IMPLIED
axis CDATA #IMPLIED
headers IDREFS #IMPLIED
scope %Scope; #IMPLIED
rowspan %Number; "1"
colspan %Number; "1"
%cellhalign;
%cellvalign;
>