XSL
test.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:x="http://www.w3.org/1999/xhtml"
>
<xsl:output method="xml" encoding="utf-8" indent="yes" />
<!-- 要素・属性をコピー(空要素タグが展開されない) -->
<xsl:template match="x:hr|x:br">
<xsl:copy-of select="."/>
</xsl:template>
<!-- 要素・属性をコピー -->
<xsl:template match="/|node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
<!--
msxsl test_in.xml test.xsl -o test_out.xml
-->
空要素タグのうち、hr
タグとbr
タグは、xsl:copy-of
でコピーする。
meta
タグは、xsl:copy
でコピーする。
XML(in)
test_in.xml
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<html xml:lang="jp" lang="jp" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>XSLTメモ (001)</title>
</head>
<body>
<h1>XSLTでXMLの要素・属性をコピーする</h1>
<p style="color:red;">XSLTでXMLの要素・属性をコピーする</p>
<p>XSLTでXMLの<br/>
<b>空要素タグ</b>
<br/>をコピーする</p>
<hr/>
</body>
</html>
xsl:copy-of
でコピーされたhr
タグとbr
タグは、展開されていない。
xsl:copy
でコピーされたmeta
タグは展開されている。
※今のところ、msxsl
でのみ確認
XML(out)
test_out.xml
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<html xml:lang="jp" lang="jp" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</meta>
<title>XSLTメモ (001)</title>
</head>
<body>
<h1>XSLTでXMLの要素・属性をコピーする</h1>
<p style="color:red;">XSLTでXMLの要素・属性をコピーする</p>
<p>XSLTでXMLの<br />
<b>空要素タグ</b>
<br />をコピーする</p>
<hr />
</body>
</html>