3
WordML 테이블을 만들려는 XML 파일이 여러 개 있습니다. 각 노드 목록에는 여러 개의 노드가 있으며 각 열에 대해 최대 15 개의 열까지 열을 만들어야합니다. 그러나 15보다 작은 경우 열을 정렬해야합니다.노드 수를 기반으로하는 동적 열이있는 XSLT WordML 테이블
템플릿이라고 NodeList를 :
<xsl:template match="NodeList">
<xsl:for-each select="NodeRef">
<xsl:sort data-type="number" select="@Position" order="ascending"/>
<xsl:sort data-type="text" select="@Name" order="ascending"/>
<xsl:variable name="documentName" select="concat(@Id, '_Nodes.xml')"/>
<xsl:apply-templates mode="SimpleNode" select="document($documentName)/Node"/>
</xsl:for-each>
</xsl:template>
템플릿이라고 SimpleNode :
<xsl:template mode="SimpleNode" match="Node">
<!-- Output the Node Table - as template within for-each,
will output table many times -->
<xsl:call-template name="SimpleNodeTable"/>
</xsl:template>
SimpleNodeTable 템플릿 (I가 붙어있어) :
<xsl:template name="SimpleNodeTable">
<w:tbl>
<w:tblPr>
<w:tblStyle w:val="ReportTable1"/>
<w:tblW w:type="dxa">
<xsl:attribute name="w:w">
<xsl:value-of select="$landscapeBodyWidth"/>
</xsl:attribute>
</w:tblW>
<w:tblLayout w:type="Fixed"/>
</w:tblPr>
<w:tblGrid>
<w:gridCol>
<xsl:attribute name="w:w">
<xsl:value-of select="$nodeNameWidth"/>
</xsl:attribute>
</w:gridCol>
<w:gridCol>
<xsl:attribute name="w:w">
<xsl:value-of select="$landscapeBodyWidth - $nodeNameWidth"/>
</xsl:attribute>
</w:gridCol>
</w:tblGrid>
<w:tr>
<!-- first row -->
<w:tc>
<!-- First cell is blank so vertically merge -->
<w:vmerge w:val="restart"/>
<w:p/>
</w:tc>
<!-- HOW TO DO A FOR EACH LOOP TO ADD 1 COLUMN PER NODEREF?? -->
<xsl:for-each select="Node">
<w:tc>
<w:p>
<!-- Second cell contains the name of the node (from xml file) -->
<w:t>
<xsl:value-of select="NodeName"/>
</w:t>
</w:p>
</w:tc>
</xsl:for-each>
</w:tr>
</w:tbl>
</xsl:template>
은 아마 내가이 접근하고있어 완전히 틀린 길 그러나 나는 1 개의 테이블을 얻고, 그 다음 시작하는 것와 함께 혼란하게했다. for-each 루프. 조언이나 안내에 감사드립니다.
w : tblGrid 구조에 소스 XML 파일의 최대 노드 목록 노드 수만큼 w : gridCol 항목이 포함되어서는 안됩니까? – collapsar
내가 이해할 수 있을지 모르겠다. 문제는 당신이 테이블을 조 변경하고 싶다는 것입니다. 그렇다면 다음을 살펴보십시오. http://stackoverflow.com/questions/1171376/matrix-transposition-in-xslt – Efrain