我想從一個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