java - 使用 XSLT 中的 id 选择 XML 值

标签 java xml pdf xslt

我正在尝试使用 XSLT 转换来转换 XML 文档,并且想知道是否可以获取具有另一个属性值的 XML 元素。

<Question>
<text id="154014">Email</text>
<answer><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6d5c5f5e2d0a000c0401430e0200" rel="noreferrer noopener nofollow">[email protected]</a></answer>
</Question>

<Question>
<text id="154015">Phone</text>
<answer>123456</answer>
</Question>

所以我的问题是,如果我的 text/@id 值为 154014,我需要得到答案 [email protected]

我无法使用 <xsl:value-of select="text[@id='154014']" />,因为它将采用不需要的 xml 元素。

最佳答案

实现此目的的另一种方法是通过 key 。像这样定义一个键,通过 text/@id

查找 Question 元素
 <xsl:key name="questions" match="Question" use="text/@id" />

然后要获取 id 的相关答案,请执行以下操作...

<xsl:value-of select="key('questions', '15184')/answer" />

或者,使用参数而不是硬编码值

<xsl:value-of select="key('questions', $id)/answer" />

参见http://xsltfiddle.liberty-development.net/nc4NzRv

关于java - 使用 XSLT 中的 id 选择 XML 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53616163/

相关文章:

java - 日历对象数组

java - 如何将图像放入excel java的单元格中?

Android - 使用 JSON 文件中的颜色的最佳方式

python - 通过 flowables 将现有 PDF 合并到新的 ReportLab PDF

powershell - 显示 PDF 文件

java - IE 正在将 Controller 的响应作为文件

java - Hibernate 二级缓存似乎不起作用

XML 是否引用带有 # 的 id?

sql-server - 在 T-SQL 中反序列化 XML 对象

ruby-on-rails - 测试使用 ActionMailer 发送的 PDF 内容