xml - 在 1 个 XSLT 文件中使用 if 语句来转换 2 种不同类型的 XML 文件
问题描述
我正在尝试使用单个 XSLT 文件来转换 2(或更多)不同类型的 XML 文件。
我希望有某种方法可以通过检查 XML 文件的“id”值来检查 XML 文件的类型,然后运行相应的转换。
例如,
XML 文件 1:
<?xml version='1.0' ?>
<file1 id="123">
<key>
<uuid>123456</uuid>
</key>
</file1>
XML 文件 2:
<?xml version='1.0' ?>
<file2 id="456">
<house>
<doors>1</doors>
<windows>4</windows>
</house>
</file2>
XSLT 文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:choose>
<xsl:when test="@id = 123">
// do something
</xsl:when>
<xsl:when test="@id = 456">
// do something else
</xsl:when>
<xsl:otherwise>
// exception message
</xsl:otherwise>
</xsl:choose>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
XML 文件在其根目录中都将具有相同的“id”,但我不知道如何在根目录中查询“id”值?
解决方案
要获取根元素的属性(不管根元素是什么),请使用/*/@id
.
<xsl:choose>
<xsl:when test="/*/@id = 123">
// do something
</xsl:when>
<xsl:when test="/*/@id = 456">
// do something else
</xsl:when>
<xsl:otherwise>
// exception message
</xsl:otherwise>
</xsl:choose>
推荐阅读
- javascript - 开玩笑模拟在模块导出之前实例化的依赖项
- manim - 如何使用复杂函数变换任何图形(就像我们对线性变换所做的那样)?
- bash - 使用带有回声的 IFS
- node.js - 在没有JS框架的客户端渲染元素类名?(EJS)
- python - 名称 self 未定义
- javascript - Firefox中的角度日期管道解析错误“222-02-01”
- hibernate - 保存时未发生 Spring data jpa Constraint Violation 异常
- c# - 如何仅计算包含许多其他字符的非常长的字符串中的字母(Aa-Zz)?
- android-recyclerview - Recyclerview viewholder 项目点击渲染问题
- php - PDO 脚本中的 mySQL 语法问题