xsl 转换 xml 文档

原创
2014/05/20 14:08
阅读数 116

xml:

 <?xml version="1.0" encoding="UTF-8"?>
<table name="student" id="444">
	<columns>
	
		<column name="name" id="11111" tableId="111111" dataType="varchar" length="2" comment="dddd" uuid="33333" isPk="1" default="" ></column>
<!-- 		<column name="" id="" tableId="" dataType="" length="" comment="" uuid="" isPk="0"></column> -->
<!-- 		<column name="" id="" tableId="" dataType="" length="" comment="" uuid="" isPk="0"></column> -->
<!-- 		<column name="" id="" tableId="" dataType="" length="" comment="" uuid="" isPk="0"></column> -->
		
		
	
	</columns>
</table>

xsl:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template match="/">
		<!-- TODO: Auto-generated template -->
		<xsl:apply-templates select="table"></xsl:apply-templates>
	</xsl:template>

	<!-- 	转换 table -->
	<xsl:template match="table">
	<h6>
		-- <xsl:value-of select="./@name"></xsl:value-of>表:<xsl:value-of select="./@comnent"></xsl:value-of>
		create Table <xsl:value-of select="./@name"></xsl:value-of>(
			<!--  判断是否多主键  -->
			<xsl:apply-templates select="columns/column"></xsl:apply-templates>
			
			
			<xsl:if test="count(//@isPk) &gt; 0 ">
				--TODO  联合主键
				,CONSTRAINT <xsl:value-of select="./@name"></xsl:value-of>_PK primary key (
				<xsl:if  test="//column[@isPk=1]"><xsl:apply-templates select="//column[@isPk=1]"></xsl:apply-templates> <!-- <xsl:value-of select="//column[@isPk=1]"></xsl:value-of> --> </xsl:if> <xsl:if test="position()!=last()">,
		 		&#160;</xsl:if>)
			</xsl:if>
		)
	</h6>
	</xsl:template>
	
	<!-- 	转换 column -->
	<xsl:template match="columns/column">
	
		 <xsl:value-of select="./@name"></xsl:value-of> 
		 <!-- 	判断是否有输入长度	  -->
		 <xsl:if test="string-length(./@length) &gt; 0  ">&#160;<xsl:value-of select="./@dataType"></xsl:value-of> </xsl:if>
		 <xsl:if test="string-length(./@default) &gt; 0  "> default <xsl:value-of select="./@default"></xsl:value-of></xsl:if>
		 <xsl:if test="string-length(./@comment) &gt; 0  "> comment <xsl:value-of select="./@comment"></xsl:value-of></xsl:if>
		 <!-- 	判断是否主键	  
 		 <xsl:if test="number(./@isPk) = 1 "> primary key </xsl:if> -->
		 <xsl:if test="position()!=last()">,
		 &#160;</xsl:if>
		
	</xsl:template>
	
	<xsl:template match="//column[@isPk=1]">
		 <xsl:value-of select="./@name"></xsl:value-of>	
		 <xsl:if test="position()!=last()">,
		 &#160;</xsl:if>
		
	</xsl:template> 

</xsl:stylesheet>


展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部