xml - XML:以最佳方式定义变量
问题描述
从相同的输入我对相同的元素有不同的xpath(除了 1 个元素,它几乎完全相同的路径,见下文)
我的逻辑取决于元素“类型”(在我的代码中定义)
XSLT 1.0
<xsl:variable name="date">
<xsl:choose>
<xsl:when test="$typology='A' or $typology='B' ">
<xsl:value-of select="/Header/info/data/Body/basketAB/date"/>
</xsl:when>
<xsl:when test="$typology='C' or $typology='D' or $typology='E'">
<xsl:value-of select="/Header/info/data/Body/basketCDE/date"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'CheckPath'"/>
</xsl:otherwise>
</xsl:choose>
如何避免使用选择 + 多个路径并仅从 1 个路径获取“日期”。
解决方案
我会避免使用后代轴并使用更明确的路径:
<xsl:variable name="date" select="/Header/info/data/Body/*/date"/>
这是假设输入不能同时包含basketAB
andbasketCDE
元素(这一点在您的问题中并不清楚,但否则这个和当前接受的答案都不起作用)。
如果上述假设结果不正确,您可以这样做:
<xsl:variable name="date" select="/Header/info/data/Body/*[contains(name(), $typology)]/date"/>
推荐阅读
- javascript - Uncaught SecurityError: Blocked a frame with origin \"null\" from access a cross-origin frame
- python - 如何在我的目录中的所有文件夹上运行子进程?
- python - 在 Python 中使用赋值表达式时如何完成赋值语句“x = y := f(x)”?
- machine-learning - PCANET中的线性层(卷积层)
- pandas - 在多列 DataFrame 上获取日志值
- php - 如何在 Symfony 4 中实现处理程序?
- javascript - 使用 SQL 数据库中的 PHP 和 JavaScript 登录
- git - 如何修复文件`package.json`中命令`git flow`的操作?
- html - CSS 过渡适用于 IE,但不适用于 Firefox、Chrome 和 Opera
- java - 如何将值的键传递给HashMap中的变量