我有一个 XSLT 文件,可将 XML 文件转换为制表符分隔的文件。我还在文件中添加了列标题。
是否有可能以某种方式让标题与使用 XSLT 的列对齐?
这是我的 XSLT 文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:wd="wdexample.com" version="1.0">
<xsl:output method="text" encoding="utf-8" media-type="text/plain" />
<xsl:strip-space elements="*" />
<xsl:variable name="newline" select="'
'" />
<xsl:variable name="tab" select="'	'" />
<xsl:template match="/">
FAO
<xsl:value-of select="$tab" />
FAO_REFERENCE_ID
<xsl:value-of select="$tab" />
FAO_TYPE
<xsl:value-of select="$tab" />
COMPANY_OF_FAO_DESCRIPTOR
<xsl:value-of select="$tab" />
COMPANY_OF_FAO_Custom_Worktag_1_ID
<xsl:value-of select="$newline" />
<xsl:for-each select="/wd:Report_Data/wd:Report_Entry">
<xsl:value-of select="substring(concat(wd:FAO, ''), 1)" />
<xsl:value-of select="$tab" />
<xsl:value-of select="substring(concat(wd:FAO_REFERENCE_ID, ''), 1, 8)" />
<xsl:value-of select="$tab" />
<xsl:value-of select="substring(concat(wd:FAO_TYPE, ''), 1)" />
<xsl:value-of select="$tab" />
<xsl:value-of select="substring(concat(wd:COMPANY, ''), 1)" />
<xsl:value-of select="$tab" />
<xsl:value-of select="substring(concat(wd:COMPANY_TYPE, ''), 1)" />
<xsl:value-of select="$tab" />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
这是输入 XML。在 XML 文件中,并不总是有每个 Report_Entry 节点的值。
<?xml version="1.0" encoding="UTF-8"?>
<wd:Report_Data xmlns:wd="wdexample.com">
<wd:Report_Entry>
<wd:FAO>testFAO</wd:FAO>
<wd:FAO_REFERENCE_ID>testRefID</wd:FAO_REFERENCE_ID>
<wd:FAO_TYPE>testType</wd:FAO_TYPE>
<wd:COMPANY>testCompany</wd:COMPANY>
<wd:COMPANY_TYPE>testCompanyType</wd:COMPANY_TYPE>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:FAO>testFAO</wd:FAO>
<wd:FAO_REFERENCE_ID>testRefID<</wd:FAO_REFERENCE_ID>
<wd:FAO_TYPE></wd:FAO_TYPE>
<wd:COMPANY></wd:COMPANY>
<wd:COMPANY_TYPE>testCompanyType</wd:COMPANY_TYPE>
</wd:Report_Entry>
...
</wd:Report_Data>
报告条目节点重复多次。如果您想知道,我有这些substring(concat())
功能,以防将来我必须填充列。
我正在考虑使用填充为列赋予与该列标题相同的宽度,以防列没有值。有没有更好的方法来做到这一点?
只是对我的问题的回顾:1)是否可以将列标题与列对齐?2)有没有更好的方法来排列列和标题以保持一致?