1
我需要輸入1個.XML文件,並輸出N個輸入文件的子集文件。該子集基於2個節點的謂詞檢查。我的計劃是通過XSLT模板運行輸入文件N次以輸出每個文件。XSLT - 在標籤中輸出xsl:模板輸出
我的輸入是這樣的:
<employee_data>
<employees>
<employee id="1">
<first_name>2sk8d</first_name>
<agency_code>38</agency_code>
<offices_administered>
<office_administered office_identifier="ALLPOIs" agency_code="HL" />
</offices_administered>
</employee>
<employee id="2">
<first_name>2sk8d</first_name>
<agency_code>24</agency_code>
<offices_administered>
<office_administered office_identifier="ALLPOIs" agency_code="22" />
</offices_administered>
</employee>
<employee id="3">
<first_name>2sk8d</first_name>
<agency_code>22</agency_code>
<offices_administered>
<office_administered office_identifier="ALLPOIs" agency_code="HL" />
</offices_administered>
</employee>
</employees>
我的XSLT看起來像這樣
<?xml version="1.0" encoding="utf-8"?>
<xsl:output method="xml" indent="yes" encoding="utf-16"/>
<xsl:template match="/employee_data/employees/employee[agency_code='22' or offices_administered/office_administered/@agency_code='22']">
<xsl:copy>
<xsl:copy-of select="."/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:message terminate="no">
Catch 1 <xsl:value-of select="name()"/>
</xsl:message>
</xsl:template>
我的問題是我的輸出不包含EmployeeData或Employees根/父節點。
如果我改變我的XSLT把第一的xsl:模板匹配,那麼這些標籤被重複多次/
如果我改變我的比賽謂詞/ employee_data /僱員[僱員/ agency_code = '22 '或員工/ offices_administered/office_administered/@ agency_code = '22']然後我得到所有員工。
這幾乎就像我想要一些神奇的東西在我的兩個父標記中包裹我匹配的整個輸出。
完美,非常感謝你@! – Dave 2013-04-05 03:16:52
@Dave,不客氣。我更新瞭解決方案,簡化了它。 – 2013-04-05 03:18:06
@Dave,另請參見上次更新:如果您有可用的XSLT 2.0處理器,則只需執行一次轉換即可創建所有N個文件。 – 2013-04-05 03:24:02