я следующий XML (упрощенный)вывода XML в HTML с использованием XSL
<?xml version="1.0" encoding="UTF-8"?>
<REPOSITORY>
<VIEW UPDATED_BY="SADMIN">
<VIEW_LOCALE UPDATED_BY="SADMIN"> </VIEW_LOCALE>
<VIEW_WEB_TEMPLATE UPDATED_BY="SADMIN" COMMENTS="TEST COMMENT">
<VIEW_WEB_TEMPLATE_ITEM UPDATED_BY="SADMIN"></VIEW_WEB_TEMPLATE_ITEM>
</VIEW_WEB_TEMPLATE>
</VIEW>
<VIEW UPDATED_BY="USER">
<VIEW_LOCALE UPDATED_BY="USER"> </VIEW_LOCALE>
<VIEW_WEB_TEMPLATE UPDATED_BY="USER">
<VIEW_WEB_TEMPLATE_ITEM UPDATED_BY="USER"></VIEW_WEB_TEMPLATE_ITEM>
<VIEW_WEB_TEMPLATE_ITEM UPDATED_BY="USER2"></VIEW_WEB_TEMPLATE_ITEM>
</VIEW_WEB_TEMPLATE>
</VIEW>
</REPOSITORY>
мне нужно пройти этот XML и напечатать вывод в HTML-таблицы. Ниже XSL я придумал
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match ="/" >
<html><head></head>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="/" >
<xsl:for-each select="REPOSITORY/VIEW">
<table>
<tr>
<td>Updated By</td>
<td><xsl:value-of select="@UPDATED_BY" /></td>
</tr>
</table>
<xsl:if test="./VIEW_WEB_TEMPLATE">
<table>
<tr><td>Updated By</td><td>Comments</td></tr>
<xsl:for-each select="*[name()='VIEW_WEB_TEMPLATE']">
<tr>
<td><xsl:value-of select="@UPDATED_BY" /></td>
<td><xsl:value-of select="@COMMENTS" /></td>
</tr>
</xsl:for-each> <!-- end of view_web_template -->
</table>
<xsl:if test="./VIEW_WEB_TEMPLATE_ITEM">
<table>
<tr><td>Updated by</td></tr>
<xsl:for-each select="./VIEW_WEB_TEMPLATE_ITEM">
<tr>
<td><xsl:value-of select="@UPDATED_BY" /></td>
</tr>
</xsl:for-each> <!-- end of web_template_item -->
</table>
</xsl:if>
</xsl:if>
</xsl:for-each> <!-- end of view -->
</xsl:template>
</xsl:stylesheet>
Я знаю, что это может быть не лучший способ сделать это, но я не в состоянии получить узловые данные о VIEW_WEB_TEMPLATE_ITEM в таблице. Условие if не работает.
Я подозреваю, что это может быть связано с тем, что узел VIEW_WEB_TEMPLATE уже обработан из-за каждого.
Таким образом, мой XPATH должен быть , если ранее обработанный узел имеет дочерний элемент, затем выберите его, но я недостаточно разбираюсь в XSLT, чтобы иметь возможность сделать это. Любые указатели ??
Спасибо, что сработало отлично. Я не мог использовать его внутри для каждого, поскольку он должен быть независимой таблицей. Поэтому я изменил предложение if и select. – Neel