从键值对动态填充列
Populating column dynamically from key value pair
我正在使用 xslt 文件进行样式设置。我正在以表格格式显示一些内容。我需要从预定义的键值对中动态填充一列。
请看下面的例子
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Sample Transformation</h2>
<table border="1">
<xyz>msgprop</xyz>
<tr bgcolor="#9acd32">
<th>Id</th>
<th>Name</th>
<th>City</th>
</tr>
<xsl:for-each select="en:MyEvent">
<tr>
<td><xsl:value-of select="en:id"/></td>
<td><xsl:value-of select="en:name"/></td>
<td><xsl:value-of select="en:country"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
问题是我收到的城市名称代替了国家/地区名称,我想用正确的城市填充城市列,为此我需要映射国家/地区及其城市。有没有办法在键值对中预定义国家及其城市,当收到国家名称时,它将被城市名称替换(如果不存在,它将显示国家名称)。
有什么功能可以做到吗?如果您提供一个片段,将会很有帮助。
编辑:这是 xml
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<cd>
<id>Empire Burlesque</id>
<Name>Bob Dylan</Name>
<country>USA</country>
</cd>
<cd>
<id>Hide your heart</id>
<name>Bonnie Tyler</name>
<country>UK</country>
</cd>
<cd>
<id>Greatest Hits</id>
<name>Dolly Parton</name>
<country>USA</country>
</cd>
<cd>
<id>Still got the blues</id>
<name>Gary Moore</name>
<country>UK</country>
</cd>
</catalog>
我需要一个映射,这样只要国家名称是英国,它就会被替换为首都伦敦,与其他国家一样。有什么方法可以将 UK 定义为一个键,将 London 定义为一个值,这样每当我收到作为 UK 的键时,它就会被替换为它的值。请帮忙
考虑以下示例:
XML
<events>
<event>
<id>001</id>
<name>Alpha</name>
<city>Paris</city>
</event>
<event>
<id>002</id>
<name>Bravo</name>
<city>UK</city>
</event>
<event>
<id>003</id>
<name>Charlie</name>
<city>Berlin</city>
</event>
<event>
<id>004</id>
<name>Delta</name>
<city>USA</city>
</event>
<event>
<id>005</id>
<name>Echo</name>
<city>Los Angeles</city>
</event>
</events>
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/events">
<html>
<body>
<h2>Sample Transformation</h2>
<table border="1">
<tr>
<th>Id</th>
<th>Name</th>
<th>City</th>
</tr>
<xsl:for-each select="event">
<tr>
<td>
<xsl:value-of select="id"/>
</td>
<td>
<xsl:value-of select="name"/>
</td>
<td>
<xsl:choose>
<xsl:when test="city = 'UK'">London</xsl:when>
<xsl:when test="city = 'USA'">Washington, D.C.</xsl:when>
<!-- add more key/value pairs here -->
<xsl:otherwise>
<xsl:value-of select="city"/>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
结果(渲染):
我正在使用 xslt 文件进行样式设置。我正在以表格格式显示一些内容。我需要从预定义的键值对中动态填充一列。 请看下面的例子
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Sample Transformation</h2>
<table border="1">
<xyz>msgprop</xyz>
<tr bgcolor="#9acd32">
<th>Id</th>
<th>Name</th>
<th>City</th>
</tr>
<xsl:for-each select="en:MyEvent">
<tr>
<td><xsl:value-of select="en:id"/></td>
<td><xsl:value-of select="en:name"/></td>
<td><xsl:value-of select="en:country"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
问题是我收到的城市名称代替了国家/地区名称,我想用正确的城市填充城市列,为此我需要映射国家/地区及其城市。有没有办法在键值对中预定义国家及其城市,当收到国家名称时,它将被城市名称替换(如果不存在,它将显示国家名称)。 有什么功能可以做到吗?如果您提供一个片段,将会很有帮助。
编辑:这是 xml
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<cd>
<id>Empire Burlesque</id>
<Name>Bob Dylan</Name>
<country>USA</country>
</cd>
<cd>
<id>Hide your heart</id>
<name>Bonnie Tyler</name>
<country>UK</country>
</cd>
<cd>
<id>Greatest Hits</id>
<name>Dolly Parton</name>
<country>USA</country>
</cd>
<cd>
<id>Still got the blues</id>
<name>Gary Moore</name>
<country>UK</country>
</cd>
</catalog>
我需要一个映射,这样只要国家名称是英国,它就会被替换为首都伦敦,与其他国家一样。有什么方法可以将 UK 定义为一个键,将 London 定义为一个值,这样每当我收到作为 UK 的键时,它就会被替换为它的值。请帮忙
考虑以下示例:
XML
<events>
<event>
<id>001</id>
<name>Alpha</name>
<city>Paris</city>
</event>
<event>
<id>002</id>
<name>Bravo</name>
<city>UK</city>
</event>
<event>
<id>003</id>
<name>Charlie</name>
<city>Berlin</city>
</event>
<event>
<id>004</id>
<name>Delta</name>
<city>USA</city>
</event>
<event>
<id>005</id>
<name>Echo</name>
<city>Los Angeles</city>
</event>
</events>
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/events">
<html>
<body>
<h2>Sample Transformation</h2>
<table border="1">
<tr>
<th>Id</th>
<th>Name</th>
<th>City</th>
</tr>
<xsl:for-each select="event">
<tr>
<td>
<xsl:value-of select="id"/>
</td>
<td>
<xsl:value-of select="name"/>
</td>
<td>
<xsl:choose>
<xsl:when test="city = 'UK'">London</xsl:when>
<xsl:when test="city = 'USA'">Washington, D.C.</xsl:when>
<!-- add more key/value pairs here -->
<xsl:otherwise>
<xsl:value-of select="city"/>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
结果(渲染):