こんにちは、ID テンプレートを使用してファイル全体をコピーするときに、XSLT を使用して特定のタグの複数の属性を置き換える必要があります。与えられた XSLT を使用すると、1 つの属性 (クラスの値) を置き換えることができますが、他の属性を置き換えることはできません。 入力ファイル:
<?xml version="1.0" encoding="utf-8"?>
<!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 name="generator" content=
"HTML Tidy for Linux/x86 (vers 11 February 2007), see www.w3.org" />
<meta http-equiv="Content-type" content="text/html; charset=us-ascii" />
<title></title>
</head>
<body>
<!--OTHER STUFF-->
<div class="LR" id="12">
</div>
<!--OTHER STUFF-->
</body>
</html>
出力ファイル:
<?xml version="1.0" encoding="utf-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 11 February 2007), see www.w3.org" />
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
<title></title>
</head>
<body>
<!--OTHER STUFF-->
<div class="WZ" id="56">
</div>
<!--OTHER STUFF-->
</body>
</html>
私のXSLT:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="xhtml">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<xsl:strip-space elements="*" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="xhtml:div[@id='12']/@class">
<xsl:attribute name="class">WZ</xsl:attribute>
<xsl:attribute name="id">56</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
ありがとうございます!