我有一個包含以下描述XML數據文件(XML文件1):選擇文本的鏈接在XML文件基於特定atttribute在當前節點的值
<?xml version="1.0" encoding="UTF-8"?>
<Labels Version="170902">
<AppointedAs>Appointed As</AppointedAs>
<Elder>Elder</Elder>
<MinisterialServant>Ministerial servant</MinisterialServant>
<NotAppointed>Not appointed</NotAppointed>
</Labels>
我也有另一個XML數據庫文件,包含關於發佈者的詳細信下面是一個剝離下來的例子來說明在手(XML文件2)問題:
<?xml version="1.0" encoding="utf-8"?>
<PublisherDatabase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.publictalksoftware.co.uk/msa">
<Publishers>
<Publisher Gender="Male" Appointed="MinisterialServant" Serving="Publisher">
<Name>Brian Wood</Name>
</Publisher>
</Publishers>
</PublisherDatabase>
現在,你可以看到在XML文件2的任命屬性? 值在XML文件1中重複,其繼而包含適當的描述。
做什麼,我需要我目前使用這個XSL腳本:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msa="http://www.publictalksoftware.co.uk/msa">
<xsl:output method="html" indent="yes" version="4.01"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
doctype-public="//W3C//DTD XHTML 1.0 Transitional//EN"/>
<xsl:variable name="PubDB" select="document('MSA_PublisherDatabase.XML')"/>
<xsl:variable name="Labels" select="document('LabelsInfo.XML')"/>
<xsl:template match="/">
<html>
<head>
<title>Publishers Report</title>
<link rel="stylesheet" type="text/css" href="Custom Publisher Report.css"/>
</head>
<body>
<table>
<thead>
<th class="cellVerticalHeading">
<xsl:value-of select="$Labels/Labels/AppointedAs"/>
</th>
</thead>
<tbody>
<xsl:apply-templates select="$PubDB/msa:PublisherDatabase/msa:Publishers/msa:Publisher[@Gender='Male']">
<xsl:sort select="msa:Name" data-type="text" order="ascending"/>
</xsl:apply-templates>
</tbody>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="msa:Publisher">
<tr>
<td>
<xsl:choose>
<xsl:when test="@Appointed='Elder'">
<xsl:value-of select="$Labels/Labels/Elder"/>
</xsl:when>
<xsl:when test="@Appointed='MinisterialServant'">
<xsl:value-of select="$Labels/Labels/MinisterialServant"/>
</xsl:when>
<xsl:when test="@Appointed='NotAppointed'">
<xsl:value-of select="$Labels/Labels/NotAppointed"/>
</xsl:when>
</xsl:choose>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
以上XSL被剝離下來。正如你所看到的,@被指定的屬性的值是MinisterialServant。然後使用此值在另一個鏈接的XML文件中查找節點以獲取要顯示的文本(即部長服務人員)。
這個XSL代碼可以簡化嗎?我能否以某種方式直接使用XML文件中鏈接的另一個查找中的@Appointed屬性的值?
謝謝。
預期輸出
<html>
<head>
<title>Publishers Report</title>
<link rel="stylesheet" type="text/css" href="Custom Publisher Report.css"/>
</head>
<body>
<table>
<thead>
<th class="cellVerticalHeading">
Appointed As
</th>
</thead>
<tbody>
<tr>
<td>
Ministerial servant
</td>
</tr>
</tbody>
</table>
</body>
</html>
請檢查:http://stackoverflow.com/help/how-to-ask和[mcve]。 –
@ michael.hor257k請參閱修訂後的問題。 –
請添加轉換給定示例的預期輸出。 –