我想从一个XML(XHTML)文件更改为另一个。在新的XML文件中,我必须删除/添加/修改某些元素。为此,我创建了一个identity.xsl
文件,该文件复制整个源文件,然后创建了一个新的XSLT,其中包括identity.xsl
,然后在新的XSLT中尝试进行修改。我可以通过传递模板匹配来消除一些不需要的属性,但是我无法在现有标记中添加新属性,也无法在特定位置添加新元素(在特定位置关闭标签)。使用XSLT-从XML到XML使用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>
您能更具体地了解您遇到的问题吗? – 2012-07-22 01:33:20
@Michael我无法添加具有属性的新元素并向现有元素添加新属性。但是,我可以删除/更新属性。例如 - 我必须在head标签后添加两个元素,并将新属性添加到body标签,但我无法做到这一点。 – RahulD 2012-07-22 01:35:41
您输入XML时存在一些错误。例如,脚本标记不平衡。请纠正,以便我们了解您的意图。 – 2012-07-22 04:50:22