关于XSL里的template match问题

请叫我小闷 2017-01-04 02:45:14

<宿舍>
<楼层 层数="1">

<双人间 房间号="101">
<住宿间>
<空调>1台</空调>
<窗户>1扇</窗户>
<床>2张</床>
<储物柜>2个</储物柜>
<电脑桌>2个</电脑桌>
<衣柜>2个</衣柜>
<椅子>2把</椅子>
</住宿间>
</双人间>
</楼层>
</宿舍>


写了一个这样的代码,如果想引用楼层1里的双人间信息 该怎么写那个template match啊,感觉找的教程都看不懂
因为有很多个楼层 所以不能直接引用双人间 必须要标注属性层数是1楼,求大神帮帮忙
...全文
532 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
rickylin86 2017-01-07
  • 打赏
  • 举报
回复
rooms.xml

<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<?xml-stylesheet href="rooms.xslt" type="text/xsl"?>
<宿舍>
    <楼层 层数="1">
     
      <双人间 房间号="101">
        <住宿间>
          <空调>1台</空调>
          <窗户>1扇</窗户>
          <床>2张</床>
          <储物柜>2个</储物柜>
          <电脑桌>2个</电脑桌>
          <衣柜>2个</衣柜>
          <椅子>2把</椅子>
        </住宿间>
      </双人间>


	  <单人间 房间号="102">
        <住宿间>
          <空调>1台</空调>
          <窗户>1扇</窗户>
          <床>1张</床>
          <储物柜>2个</储物柜>
          <电脑桌>2个</电脑桌>
          <衣柜>2个</衣柜>
          <椅子>2把</椅子>
        </住宿间>
      </单人间>

	  <双人间 房间号="103">
        <住宿间>
          <空调>1台</空调>
          <窗户>1扇</窗户>
          <床>2张</床>
          <储物柜>2个</储物柜>
          <电脑桌>2个</电脑桌>
          <衣柜>2个</衣柜>
          <椅子>2把</椅子>
        </住宿间>
      </双人间>

   </楼层>
   <楼层 层数="2">
	<双人间 房间号="201">
        <住宿间>
          <空调>1台</空调>
          <窗户>1扇</窗户>
          <床>2张</床>
          <储物柜>2个</储物柜>
          <电脑桌>2个</电脑桌>
          <衣柜>2个</衣柜>
          <椅子>2把</椅子>
        </住宿间>
      </双人间>
   </楼层>
</宿舍>
rooms.xslt

<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<xsl:stylesheet 
	version="2.0" 
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output indent="yes"/>
	<xsl:template match="/">
		<xsl:apply-templates select="宿舍/楼层[@层数='1']/双人间"/>
	</xsl:template>
	<xsl:template match="双人间">
		<table>
			<thead>
				<xsl:call-template name="showIDs"/>
			</thead>
			<tbody>
				<xsl:call-template name="showDetail"/>
			</tbody>
		</table>
		<hr/>
	</xsl:template>


	<xsl:template name="showIDs">
		<xsl:for-each select="@*|住宿间/*">
			<th>
				<xsl:value-of select="name()"/>
			</th>
		</xsl:for-each>
	</xsl:template>

	<xsl:template name="showDetail">
		<xsl:for-each select="@*|住宿间/*">
			<th>
				<xsl:value-of select="normalize-space(.)"/>
			</th>
		</xsl:for-each>
	</xsl:template>

</xsl:stylesheet>
业余草 2017-01-04
  • 打赏
  • 举报
回复

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧