ここで推奨されているように、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 は直接の子であることに注意してください。
$styleName
Form1 は、祖先がattribute を持つ属性 equaling を持つ w:style 要素を取得すると述べていpkg:part
ます@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"/>
ありがとうございました。