XSLT を使用して、ある XML (XHTML) ファイルから別の XML (XHTML) ファイルに変更したいと考えています。新しい XML ファイルでは、いくつかの要素を削除/追加/変更する必要があります。そのためにidentity.xsl
、ソース ファイル全体をコピーする 1 つのファイルを作成し、それを含む新しい XSLT を作成し、identity.xsl
その新しい XSLT で変更を加えようとしています。何もしないテンプレート マッチを渡すことで、必須ではないいくつかの属性を削除できますが、既存のタグに新しい属性を追加することはできず、特定の場所に新しい要素を追加することもできません (特定の場所に終了タグを付けます)。
私の元のファイル:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="o">
<div id="nd">
<p>1</p>
</div>
<div class="TF id="id12">
<element1 name="abc" src="abc.jpg"></script>
<input type="radio" id="1" event="xyz">
<div class="q">
<br/>
<div id="ta3" class="block">
<span style="a">ABC</span>
</div>
<br/>T <input/> F <input/>
<div id="sf">
<div id="ta3">
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
必要なファイル:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
</head>
<!--HAVE TO AD THESE TWO ELEMENTS-->
<element add="xyz" id="23">
<element add="xyz" id="24">
<!--ADD ATTRIBUTES IN BODY TAG-->
<body onLoad="ada" bgcolor="pink">
<div id="o">
<div id="nd">
<p>1</p>
</div>
<div class="TF id="id12">
<!--HAVE TO UPATE THE VALUE OF SRC ATTRIBUTE -->
<element1 name="abc" src="xyz.jpg"></script>
<!--ADD THIS FORM ELEMENT WITH ATTRIBUTE-->
<form name="form">
<input type="radio" id="1" event="xyz">
<div class="q">
<br/>
<div id="ta3" class="block">
<span style="a">ABC</span>
</div>
<br/>T
<!--ADD TABLE/TR/TD TAG-->
<table>
<tr>
<td>
<input/>
</td>
</tr>
<tr>
</td>
F <input/>
</td>
</tr>
</table>
<div id="sf">
<div id="ta3">
</div>
</div>
</div>
<!--ADD INPUT TAG-->
<input type="submit" value="Done"/>
</div>
</div>
<!--CLOSE FORM TAG-->
</form>
</div>
</body>
</html>
XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Import the identity transformation. -->
<xsl:import href="identity.xsl"/>
<xsl:template match="body">
<body>
<xsl:apply-templates select="body">
</xsl:apply-templates>
</body>
</xsl:template>
<xsl:template match="body">
<body onLoad="ada" bgcolor="pink"></body>
</xsl:template>
<!--REMOVES THE MATCHING ATTRIBUTE and DOES THE JOB-->
<xsl:template match="@attr"> </xsl:template>
<xsl:template match="input">
<xsl:element name="input">
<xsl:attribute name="type">submit</xsl:attribute>
<xsl:attribute name="value">Done</xsl:attribute>
<xsl:apply-templates />
</xsl:element>
</xsl:template>
</xsl:stylesheet>