我想使用 XSLT 从一个 XML (XHTML) 文件更改为另一个。在新的 XML 文件中,我必须删除/添加/修改一些元素。因此,为此我创建了一个identity.xsl
文件,它复制了整个源文件,然后我创建了一个新的 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>