我的具体需要是在给定特定字体大小的情况下查找行高,但我正在寻求学习创建查找/特定映射的一般技术。
我认为可以将 XML 嵌入 XSLT 文档本身(因此它可以独立工作)并使用 document('') 函数在其上构建一个密钥来引用当前的 XSLT,如下所示:
<xsl:variable name="data.font-metrics.line-height">
<line-height font-size="11">12</line-height>
<line-height font-size="12">14</line-height>
<line-height font-size="13">15</line-height>
<line-height font-size="14">16</line-height>
<line-height font-size="15">17</line-height>
<line-height font-size="16">18</line-height>
<line-height font-size="17">20</line-height>
<line-height font-size="18">21</line-height>
</xsl:variable>
<xsl:key name="lookup.font-metrics.line-height" match="document('')//xsl:variable[@name='data.font-metrics.line-height'])/line-height" use="@font-size"/>
之后,我应该能够使用 key 函数查找行高:
<xsl:value-of select="key('lookup.font-metrics.line-height',$font-size)"/>
...但是我收到以下错误消息:
XPath error : Invalid expression
//document('')//xsl:variable[@name='data.font-metrics.line-height'])/line-height/text()
^
我认为这里有几个问题:
- 使用文档功能
- 按键功能的使用
- 嵌入 XML 的最佳方法是什么?在变量中?
该问题也可能有完全不同的解决方案。
我将非常感谢您的帮助!