我的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();
但是在转换之后,只有第一个项目插入到我的输出对象中。不是两个。
感谢任何帮助。
答案 0 :(得分:1)
我认为不是
Element child2 = doc.createElement("item2");
你想要
Element child2 = doc.createElement("item");
或者您需要将XSLT更改为<xsl:for-each select="$array/*">
。