XSL不会转换作为参数给出的数组

时间:2014-10-17 11:58:55

标签: xslt

我的XSL文件中有一个模板" printRestrictions"将作为参数给出的数组转换为我的转换器对象:

    <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    exclude-result-prefixes="this xsl" version="1.0">
    <xsl:output indent="yes"/>
    <xsl:param name="destinationRestriction"/>
    <xsl:template name="printRestrictions">
        <xsl:param name="array"/>
        <xsl:if test="$array">
            <xsl:for-each select="$array/item">
                <restriction><xsl:value-of select="@value"/></restriction>
            </xsl:for-each>
        </xsl:if>
    </xsl:template>
    <xsl:template match="af:ascframe">
        <ascstatistic>
            <destination>
                <restrictions>
                     <xsl:call-template name="printRestrictions">
                        <xsl:with-param name="array" select="$destinationRestriction"/>
                    </xsl:call-template>
                </restrictions>
            </destination>
        </ascstatistic>
    </xsl:template>
</xsl:stylesheet>

我给我的转换器一个包含两个项目的NodeList对象(org.w3c.dom)。

    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
    Document doc = docBuilder.newDocument();
    Element rootElement = doc.createElement("root");
    doc.appendChild(rootElement);

    Element child = doc.createElement("item");
    child.setAttribute("value", "id1");
    rootElement.appendChild(child);

    Element child2 = doc.createElement("item2");
    child2.setAttribute("value", "id2");
    rootElement.appendChild(child2);

    NodeList childrenRestrictionsIds = rootElement.getChildNodes();

但是在转换之后,只有第一个项目插入到我的输出对象中。不是两个。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我认为不是

Element child2 = doc.createElement("item2");

你想要

Element child2 = doc.createElement("item");

或者您需要将XSLT更改为<xsl:for-each select="$array/*">