我正在重构 word xml 的 xslt,以按照此处的建议提高性能。我对 xslt 比较陌生。为什么以下陈述不等价?
表格1
<xsl:value-of select="//w:style[@w:styleId = $styleName][ancestor::pkg:part/@pkg:name='/word/styles.xml']"/>
表格2
<xsl:value-of select="/pkg:package/pkg:part[@pkg:name='/word/styles.xml']/child::w:style[@w:styleId = $styleName]" />
请注意, pkg:package 是根, pkg:part 是直接子级。
Form1 声明获取 w:style 元素,其属性为 equaling $styleName
,其祖先为pkg:part
attribute @pkg:name='/word/styles.xml'
。
表格 2 状态获得 w:style 元素,其属性等于$styleName
who are childrenpkg:package/pkg:par@pkg:name='/word/styles.xml'
我试图重写的实际语句是这样的:
<xsl:value-of select="//w:style[@w:styleId = $styleName][ancestor::pkg:part/@pkg:name='/word/styles.xml']/w:pPr/w:numPr/w:numId/@w:val"/>
谢谢你。