Для каждой таблицы в документе я хотел бы определить ее как «простой» или «сложный». Он должен быть «простым», если каждая строка содержит не более двух столбцов, иначе она должна быть «сложной».XSLT: подсчет целых столбцов
Как это сделать с xslt?
Для каждой таблицы в документе я хотел бы определить ее как «простой» или «сложный». Он должен быть «простым», если каждая строка содержит не более двух столбцов, иначе она должна быть «сложной».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 - сложный.
Вы забыли добавить select = "count (./*)" вам string
Покажите нам свой XML, трудно понять, что вам нужно XSLT. –
Извините. Это общая таблица выглядит как разметка HTML с произвольным количеством ячеек в каждой строке. – Kalinin