문서의 각 테이블에 대해 "단순"또는 "복잡"으로 정의하고 싶습니다. 각 행에 최대 2 개의 열이 포함되어 있으면 "단순"해야하며 그렇지 않으면 복잡해야합니다.XSLT : 전체 테이블 열 수
xslt으로 어떻게해야합니까?
문서의 각 테이블에 대해 "단순"또는 "복잡"으로 정의하고 싶습니다. 각 행에 최대 2 개의 열이 포함되어 있으면 "단순"해야하며 그렇지 않으면 복잡해야합니다.XSLT : 전체 테이블 열 수
xslt으로 어떻게해야합니까?
시간을 들여서 죄송합니다. 나는 해결책을 찾았다. 누군가가 필요하다면 여기에 답이 있습니다.
<xsl:template match="TABLE">
<xsl:variable name="tableClass">
<xsl:choose>
<xsl:when test="count(TBODY/TR[count(child::*) = 2]) = count(TBODY/TR)">
simple
</xsl:when>
<xsl:otherwise>
complicated
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<table class="{$tableClass}">
<xsl:apply-templates select="CAPTION"/>
<xsl:apply-templates select="TBODY"/>
and so on.......
</table>
을 감안할 때 두 XML 문서, A :
<base>
<row>
<col1 value='x'/>
<col2/>
</row>
<row>
<col1 value='y'/>
<col2/>
</row>
<row>
<col1 value='z'/>
<col2/>
</row>
</base>
및 B :
<base>
<row>
<col1/>
<col2/>
<col3/>
</row>
<row>
<col1/>
<col2/>
</row>
</base>
이 XSL 그것이 "간단한"또는 "복잡한"를 기반으로하는 경우 말할 것이다 각 최상위 행 요소 아래에있는 하위 요소의 수 :
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding = "iso-8859-1"/>
<!-- is the xml simple? -->
<!-- simple, in this case, means each row has 2 or fewer columns -->
<xsl:variable name="maxColCount">
<xsl:for-each select="//base/row">
<xsl:sort data-type="number" order="descending"/>
<xsl:if test="position()=1"><xsl:value-of select="count(./*)"/></xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:template match="/">
<xsl:choose>
<xsl:when test="$maxColCount > 2">complex</xsl:when>
<xsl:otherwise>simple</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
결과는 다음과 같습니다. A는 간단하고 B는 복잡합니다.
문자열
XML을 표시하면 XSLT에 필요한 것이 무엇인지 이해하기 어렵습니다. –
죄송합니다. 이것은 각 행에 임의의 수의 셀이있는 HTML 마크 업과 비슷한 공통 테이블입니다. – Kalinin