Я пытаюсь получить древовидное представление XML-файла с использованием XSLT и css. У меня есть вложенные дети в xml, и я повторяю их, чтобы отображать содержимое каждой записи.Как установить маржу динамически на XSLT
Каждый ребенок является регистратором с сообщениями. Я бы хотел, чтобы каждый дочерний стол был отступом в соответствии с подсчетом предка, который я получаю правильно. однако попытка установить поле таблицы динамически margin-left = "$ margin * 10" не работает.
Это мой XSLT/XML
<xsl:template match="operationLogger">
<xsl:variable name="margin" select="count(ancestor::*) * 10"/>
<table class="normalTable" cols="4">
<xsl:attribute name="margin-left">
<xsl:value-of select="$margin"/>
</xsl:attribute>
<tr class="errorsCollectionTitle">
<td colspan="4">
<xsl:value-of select="@name"/>
</td>
</tr>
<xsl:if test="operationLogEntry">
<xsl:apply-templates select="operationLogEntry"/>
</xsl:if>
<xsl:if test="operationLogger">
<xsl:apply-templates select="operationLogger"/>
</xsl:if>
</table>
</xsl:template>
<xsl:template match="operationLogEntry">
<tr>
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="position() mod 2 = 1">rowData</xsl:when>
<xsl:otherwise>rowAlternatingData</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<td>
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="@level = 'Error'">errorImage</xsl:when>
<xsl:when test="@level = 'Warning'">warningImage</xsl:when>
<xsl:when test="@level = 'Info'">informationImage</xsl:when>
<xsl:when test="@level = 'Debug'">informationImage</xsl:when>
</xsl:choose>
</xsl:attribute>
</td>
<td class="timeStamp">
<xsl:value-of select="@timeStamp"/>
</td>
<td class="source">
<xsl:value-of select="../loggerSource/@computer" />
/
<xsl:value-of select="../loggerSource/@user" />
</td>
<td class="message">
<div>
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="@level = 'Error'">errorColor</xsl:when>
<xsl:when test="@level = 'Warning'">warningColor</xsl:when>
<xsl:when test="@level = 'Info'">informationColor</xsl:when>
<xsl:when test="@level = 'Debug'">informationColor</xsl:when>
</xsl:choose>
</xsl:attribute>
<xsl:value-of select="@message"/>
</div>
</td>
</tr>
</xsl:template>
<operationLogger name="">
<loggerSource domain="user" computer="computer" user="account" />
<operationLogEntry timeStamp="2015/02/16 07:15:21" level="Info" message="Adding 1 to transactions list" />
<operationLogEntry timeStamp="2015/02/16 07:15:21" level="Info" message="Executing 1 transactions..." />
<operationLogEntry timeStamp="2015/02/16 07:15:22" level="Info" message="Executed 1 transactions successfully!" />
<operationLogger name="TransactionOperationCollection.Execute()">
<loggerSource domain="user" computer="computer" user="account" />
<operationLogEntry timeStamp="2015/02/16 07:15:21" level="Info" message="Commiting transaction 0:Transaction" />
<operationLogEntry timeStamp="2015/02/16 07:15:22" level="Info" message="Committed transaction 0:Transaction" />
<operationLogger name="TransactionOperation.Commit()">
<operationLogEntry timeStamp="2015/02/16 07:15:22" level="Info" message="Setting Auditonly" />
<operationLogEntry timeStamp="2015/02/16 07:15:22" level="Info" message="Succesfully changed Audit Only" />
</operationLogger>
</operationLogger>
</operationLogger>
и я попытался зацикливание от 1 до 'числа предков' и добавление продолжительности или дел. Я попытался нажать содержимое первой строки. для меня ничего не работает.
Любая помощь была бы принята с благодарностью!
спасибо большое! Я не могу поверить, что потратил столько времени на встроенные атрибуты вместо использования стиля! вы спаситель! – Roussul