【发布时间】:2019-08-30 03:08:55
【问题描述】:
请帮助我理解为什么我第一次尝试 XSLT 转换并没有产生我期望的结果。
这是我的 XML 输入:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="partition_table.xsl"?>
<pl version="01.00.0000">
<de name="s_b" ins="3">
<pa name="BT" type="bct">
<ap> sec </ap>
<ft> b2 </ft>
<s> 32768 </s>
<fsa> 0 </fsa>
<aa> 8 </aa>
<r> 0 </r>
</pa>
<pa name="m1" type="mb">
<ap> sec </ap>
<ft> b2 </ft>
<s> 262144 </s>
<fsa> 0 </fsa>
<aa> 8 </aa>
<r> 0 </r>
<f> MBF </f>
</pa>
<pa name="m1b" type="mb">
<ap> sec </ap>
<ft> b2 </ft>
<s> 262144 </s>
<fsa> 0 </fsa>
<aa> 8 </aa>
<r> 0 </r>
<f> MBF </f>
</pa>
</de>
</pl>
这是我的 XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="ap fst s fsa aa r f" />
<xsl:template match="/">|N|T|AP|FST|S|FSA|AA|R|F|
|:---|:---|:-----------|:------|---:|-----------:|--------------:|-------:|:-------|
<xsl:for-each select="pl/de/pa">|<xsl:value-of select="@n"/>|<xsl:value-of select="@t"/>|<xsl:value-of select="ap"/>|<xsl:value-of select="fst"/>|<xsl:value-of select="s"/>|<xsl:value-of select="fsa"/>|<xsl:value-of select="aa"/>|<xsl:value-of select="r"/> %|<xsl:value-of select="f"/>|
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我得到这个输出:
<?xml version="1.0" encoding="UTF-8"?>|N|T|AP|FST|S|FSA|AA|R|F|
|:---|:---|:-----------|:------|---:|-----------:|--------------:|-------:|:-------|
||| sec || 32768 | 0 | 8 | 0 %||
||| sec || 262144 | 0 | 8 | 0 %| MBF |
||| sec || 262144 | 0 | 8 | 0 %| MBF |
有两个问题。第一个是在输出开头出现<?xml...?> 标签。它不在 XSLT 中,因为我正在生成 markdown,所以我不想要它!
第二个问题是<xsl:strip-space.../> 标签被忽略了。我尝试了elements="*",但得到了相同的结果。
我正在使用https://xslttest.appspot.com/ 的 XSLT 测试工具进行测试。
【问题讨论】: