我正在尝试从XML文档中选择一组业务位置。此代码有效,但只选择一个项目。所以,我的问题是:我可以对此代码做些什么来使其适用于每个位置?
<xsl:template match="/InstitutionAlias/InstitutionAliasExternalReferenceCollection">
<InstitutionExternalReferenceCollection>
<xsl:for-each select="InstitutionAliasExternalReference">
<InstitutionExternalReference>
<ExternalReferenceIdentifier>
<xsl:value-of select="ExternalReferenceIdentifier"/>
</ExternalReferenceIdentifier>
</InstitutionExternalReference>
</xsl:for-each>
</InstitutionExternalReferenceCollection>
</xsl:template>
这是输出应该是什么样的
<InstitutionExternalReferenceCollection>
- <InstitutionExternalReference>
<ExternalReferenceIdentifier>Test1</ExternalReferenceIdentifier>
</InstitutionExternalReference>
- <InstitutionExternalReference>
<ExternalReferenceIdentifier>Test2</ExternalReferenceIdentifier>
</InstitutionExternalReference>
这是一个示例xml文件。
- <InstitutionAliasExternalReferenceCollection>
- <InstitutionAliasExternalReference>
<ExternalReferenceIdentifier>Test1</ExternalReferenceIdentifier>
</InstitutionAliasExternalReference>
- <InstitutionAliasExternalReference>
<ExternalReferenceIdentifier>Test2</ExternalReferenceIdentifier>
</InstitutionAliasExternalReference>
答案 0 :(得分:1)
这样的东西?如果您确定每个企业只能有一个位置标识符(我不知道),那么可以压缩它,但我决定将事物分成不同的模板。
您可以在this XMLPlayground运行它(请参阅输出源)。
<!-- kick things off -->
<xsl:template match="BusinessCollection">
<BusinessCollection>
<xsl:apply-templates select='Business' />
</BusinessCollection>
</xsl:template>
<!-- each business -->
<xsl:template match='Business'>
<Business>
<xsl:apply-templates select='LocationIdentifier' />
</Business>
</xsl:template>
<!-- each location identifier -->
<xsl:template match='LocationIdentifier'>
<LocationIdentifier>
<xsl:value-of select='.' />
</LocationIdentifier>
</xsl:template>
</xsl:stylesheet>
您的预期输出提到了Data
个节点,但这些节点没有出现在您的XSL尝试中,因此我不确定其目的是什么。