У меня есть исходный отрывок из XML:XSLT Выберите узел, если родители не имеют соответствие детей
<TableRow TableRowLevel="1" RowTitle="" TableRowNumber="2" class="OddLegacy">
<TableCell>
<Paragraph>10.140.50.50</Paragraph></TableCell>
<TableCell>
<Paragraph>Sun Solaris 8</Paragraph></TableCell>
<TableCell>
<Paragraph>53.1</Paragraph></TableCell>
<TableCell>
<UnorderedList UnorderedListLevel="1" class="compactList" UnorderedListNumber="1">
<ListItem>opusone.dal.veritas.com</ListItem>
<ListItem>OPUSONE</ListItem></UnorderedList></TableCell></TableRow>
<TableRow TableRowLevel="1" RowTitle="" TableRowNumber="3" class="Even">
<TableCell>
<Paragraph>10.140.50.163</Paragraph></TableCell>
<TableCell>
<Paragraph>Sun Solaris 8</Paragraph></TableCell>
<TableCell>
<Paragraph>53.0</Paragraph></TableCell>
<TableCell>
<UnorderedList UnorderedListLevel="1" class="compactList" UnorderedListNumber="1">
<ListItem>dns1.dal.veritas.com</ListItem>
<ListItem>opusone.dal.veritas.com</ListItem></UnorderedList></TableCell></TableRow>
<TableRow TableRowLevel="1" RowTitle="" TableRowNumber="4" class="OddLegacy">
<TableCell>
<Paragraph>10.140.50.82</Paragraph></TableCell>
<TableCell>
<Paragraph>HP-UX 870849686</Paragraph></TableCell>
<TableCell>
<Paragraph>31.4</Paragraph></TableCell>
<TableCell>
<UnorderedList UnorderedListLevel="1" class="compactList" UnorderedListNumber="1">
<ListItem>unknown</ListItem>
<ListItem>testarossa.dal.veritas.com</ListItem></UnorderedList></TableCell></TableRow>
<TableRow TableRowLevel="1" RowTitle="" TableRowNumber="5" class="Even">
<TableCell>
<Paragraph>10.140.50.71</Paragraph></TableCell>
<TableCell>
<Paragraph>Microsoft Windows Server 2008 R2, Enterprise Edition</Paragraph></TableCell>
<TableCell>
<Paragraph>30.5</Paragraph></TableCell>
<TableCell>
<UnorderedList UnorderedListLevel="1" class="compactList" UnorderedListNumber="1">
<ListItem>EVSERV1.evexample.local</ListItem>
<ListItem>EVSERV1</ListItem></UnorderedList></TableCell></TableRow>
мне нужно вывести строку таблицы для каждой строки в источнике, если ОС (Microsoft Windows Server 2008 R2, Enterprise Edition) является уникальным. До сих пор у меня есть:
<xsl:for-each select="Table/TableRow[TableCell[2]/Paragraph[not(preceding-sibling::TableCell[2]/Paragraph)]]">
<xsl:sort select="TableCell[2]/Paragraph"/>
<xsl:variable name="newosname" select="TableCell[2]/Paragraph"/>
<xsl:variable name="oscount" select="count(parent::Table/TableRow[TableCell/Paragraph = $newosname])"/>
<tr>
<td>
<xsl:value-of select="$newosname"/>
<xsl:value-of select ="TableCell[2]/Paragraph[not(preceding::TableCell[2]/Paragraph)]"/>
</td>
<td>
<xsl:value-of select="$oscount"/>
</td>
</tr>
</xsl:for-each>
Примечание предшествующее не тест только я играл с попыткой проверить ось.
Ожидаемые результаты
<tr>
<td>Sun Solaris 8</td>
<td>2</td>
</tr>
<tr>
<td>HP-UX 870849686</td>
<td>1</td>
</tr>
....
Я не знал, что вы хотите XSLT-1.0 :(Я разработал и протестировал этот код в XMLSpy, и он сработал. – Lukasz
Извините, я пробовал использовать v2 в таблице стилей, но все еще сломан в браузере (firefox 5) – Psydone