XSLTを初めて使用しました。再帰的ノードからの出力が必要なXSLT変換
サンプルXML
<exports>
<job>Job1</job>
<date>Wed Sep 27 13:19:29 CDT 2017</date>
<targets>
<target server-name="">
<templates>
<template />
<template />
</templates>
<components>
<component>test2server</component>
<component>test4server</component>
</components>
</target>
</targets>
<auditrun template="RHEL">
<objects-audited />
<Changed-targets>
<target>test2server</target>
<target>test4server</target>
</Changed-targets>
<unchanged-targets />
<changed-audit-items>
<node1>"file"</node1>
<node2>"filename1"</node2>
<node3>"filename1"</node3>
<target>"test2server"</target>
<node5>"lastnight"</node5>
</changed-audit-items>
<changed-audit-items>
<node1>"registryval"</node1>
<node2>"filename2"</node2>
<node3>"filename2"</node3>
<target>"test4server"</target>
<node5>"morning"</node5>
</changed-audit-items>
</auditrun>
</exports>
所望の出力
Changed Audit Items 1
node 1 - file
node 2 - filename1
node 3 - filename1
target - test2server
node 5 - lastnight
Changed Audit items 2
node 1 - registryval
node 2 - filename2
node 3 - filename2
target - test4server
node 5 - morning
マイ変換 - 私は、forループを下記に使用していますが、テキストに出力を印刷する&値を追加したが、所望の取得に失敗しました出力。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="text" indent="no" />
<xsl:template match="/exports">
<xsl:apply-templates select="auditrun" />
</xsl:template>
<xsl:template match="auditrun/changed-audit-items">
<xsl:for-each select="exports/auditrun/changed-audit-items/node3">
<xsl:text disable-output-escaping="no"> </xsl:text>
<xsl:text disable-output-escaping="yes"> Changed Targets: </xsl:text>
<xsl:value-of select="//changed-audit-items/target/text()" disable-output-escaping="no" />
</xsl:for-each>
<xsl:variable select="1" name="counter" />
<xsl:variable select="count(//changed-audit-items/node3)" name="CountAuditItems" />
<Audit>
<xsl:value-of select="count(//Changed-targets/target)" disable-output-escaping="no" />
<xsl:text disable-output-escaping="no"> Total number of Changed Server Items: </xsl:text>
<xsl:value-of select="count(//changed-audit-items/node3)" disable-output-escaping="no" />
</Audit>
<xsl:text disable-output-escaping="no"> </xsl:text>
<xsl:text disable-output-escaping="no">node1 </xsl:text>
<xsl:value-of select="//changed-audit-items/node1/text()" disable-output-escaping="yes" />
<xsl:text disable-output-escaping="no"> </xsl:text>
<xsl:text disable-output-escaping="no">node3: </xsl:text>
<xsl:value-of select="//changed-audit-items/node3/text()" disable-output-escaping="no" />
<xsl:text disable-output-escaping="no"> </xsl:text>
<xsl:text disable-output-escaping="no">Node2: </xsl:text>
<xsl:value-of select="//changed-audit-items/node2/text()" disable-output-escaping="no" />
<xsl:text disable-output-escaping="no"> </xsl:text>
<xsl:text disable-output-escaping="no">node4</xsl:text>
<xsl:value-of select="//changed-audit-items/node4/text()" disable-output-escaping="no" />
<xsl:text disable-output-escaping="no"> </xsl:text>
</xsl:template>
</xsl:stylesheet>
私は専門家に指導を依頼したいと思います。
よろしく、
R
あなたは "下のループ" を使用していない、またはあなたがしている場合、あなたは、XSLTを使用していないです。 –
ここに私が書いた変換があります。 –