【问题标题】:The required item type of the context item for the child axis is node(); the supplied value "xyz" is an atomic value子轴的上下文项所需的项类型是node();提供的值“xyz”是一个原子值
【发布时间】:2022-01-23 05:34:23
【问题描述】:

我有以下 XML,我正在尝试将每个下的值与一个变量进行比较,该变量具有多个由“|”分隔的值。我想从与每个组中的值不匹配的变量中输出值。下面是 XML 和 XSLT-

<RegionLOBs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:statutorytype="us-stat-2020-annual-stmt-pc"
    xmlns:xbrli="http://www.xbrl.org/2001/instance"
    xmlns:iso4217="http://www.xe.com/iso4217.htm"
    xmlns:stat="urn:www-iasa-org/tempuri">
    <Group>
        <Region>AL</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>AR</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivateFlood PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>AZ</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>CA</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>CO</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivateFlood PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>CT</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>DC</Region>
        <LOB>WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherCommercialAutoLiability CommercialAutoPhysicalDamage Surety</LOB>
    </Group>
    <Group>
        <Region>DE</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability CommercialAutoNoFault OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>GA</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>IA</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ExcessWorkersCompensation ProductsLiability PrivatePassengerAutoNoFault OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivateFlood PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>ID</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>IL</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivateFlood PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>IN</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ExcessWorkersCompensation ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivateFlood PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>KS</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability PrivatePassengerAutoNoFault OtherPrivatePassengerAutoLiability CommercialAutoNoFault OtherCommercialAutoLiability AlliedLines PrivateFlood PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>KY</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability PrivatePassengerAutoNoFault OtherPrivatePassengerAutoLiability CommercialAutoNoFault OtherCommercialAutoLiability AlliedLines PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>LA</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>MA</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability CommercialAutoNoFault OtherCommercialAutoLiability AlliedLines PrivateFlood CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>MD</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability CommercialAutoNoFault OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>ME</Region>
        <LOB>Fire OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Surety BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>MI</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability CommercialAutoNoFault OtherCommercialAutoLiability AlliedLines PrivateFlood CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>MN</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability PrivatePassengerAutoNoFault OtherPrivatePassengerAutoLiability CommercialAutoNoFault OtherCommercialAutoLiability AlliedLines PrivateFlood PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>MO</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivateFlood PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>MS</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>MT</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>NC</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivateFlood PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>ND</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability PrivatePassengerAutoNoFault OtherPrivatePassengerAutoLiability CommercialAutoNoFault OtherCommercialAutoLiability AlliedLines PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>NE</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivateFlood PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>NH</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>NJ</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability CommercialAutoNoFault OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>NM</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherCommercialAutoLiability AlliedLines PrivateFlood CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>NV</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>NY</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability CommercialAutoNoFault OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>OH</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ExcessWorkersCompensation ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivateFlood PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>OK</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivateFlood PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>OR</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability CommercialAutoNoFault OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>PA</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ExcessWorkersCompensation ProductsLiability CommercialAutoNoFault OtherCommercialAutoLiability AlliedLines PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>RI</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherCommercialAutoLiability AlliedLines PrivateFlood CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>SC</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>SD</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>TN</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>TX</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherPrivatePassengerAutoLiability CommercialAutoNoFault OtherCommercialAutoLiability AlliedLines PrivateFlood PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>UT</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability CommercialAutoNoFault OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>VA</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>WA</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability CommercialAutoNoFault OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>WI</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivateFlood PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>WV</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>WY</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivateFlood PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery HomeownersMultiplePeril InlandMarine</LOB>
    </Group>
    <Group>
        <Region>AK</Region>
        <LOB>Fire WorkersCompensation OtherLiabilityOccurrence ProductsLiability Surety InlandMarine</LOB>
    </Group>
    <Group>
        <Region>FL</Region>
        <LOB>Fire Earthquake WorkersCompensation OtherLiabilityOccurrence OtherLiabilityClaimsMade ProductsLiability CommercialAutoNoFault OtherCommercialAutoLiability AlliedLines CommercialAutoPhysicalDamage Fidelity Surety BurglaryAndTheft BoilerAndMachinery InlandMarine</LOB>
    </Group>
    <Group>
        <Region>VT</Region>
        <LOB>Fire WorkersCompensation OtherLiabilityOccurrence ProductsLiability OtherPrivatePassengerAutoLiability OtherCommercialAutoLiability AlliedLines PrivatePassengerAutoPhysicalDamage CommercialAutoPhysicalDamage Surety BoilerAndMachinery</LOB>
    </Group>
    <Group>
        <Region>HI</Region>
        <LOB>WorkersCompensation OtherLiabilityOccurrence Surety</LOB>
    </Group>
</RegionLOBs>

我使用的版本是 XSLT 2.0,如下图 -

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wd="urn:com.workday.report/CR_Page_14_EMC"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:statutorytype="us-stat-2020-annual-stmt-pc"
    xmlns:xbrli="http://www.xbrl.org/2001/instance" xmlns:iso4217="http://www.xe.com/iso4217.htm"
    xmlns:stat="urn:www-iasa-org/tempuri" exclude-result-prefixes="xs wd" version="2.0">
    
    <xsl:output omit-xml-declaration="yes" indent="yes" method="xml"/>
    
    <xsl:variable name="single_quote">
        <xsl:text>'</xsl:text>
    </xsl:variable>
    <xsl:variable name="ampersand">
        <xsl:text>&amp;</xsl:text>
    </xsl:variable>
    
    <xsl:variable name="LOB_Hier">
        <xsl:text>Fire|AlliedLines|MultiplePerilCrop|FederalFlood|PrivateCrop|PrivateFlood|FarmownersMultiplePeril|HomeownersMultiplePeril|CommercialMultiplePerilNonLiabilityPortion|CommercialMultiplePerilLiabilityPortion|MortgageGuaranty|OceanMarine|InlandMarine|FinancialGuaranty|MedicalProfessionalLiability|Earthquake|GroupAccidentAndHealth|CreditAccidentAndHealth|CollectivelyRenewableAccidentAndHealth|NonCancelableAccidentAndHealth|GuaranteedRenewableAccidentAndHealth|NonRenewableForStatedReasonsOnly|OtherAccidentOnly|MedicareTitleXviiiExemptFromStateTaxesOrFees|AllOtherAccidentAndHealth|FederalEmployeesHealthBenefitsPlanPremium|WorkersCompensation|OtherLiabilityOccurrence|OtherLiabilityClaimsMade|ExcessWorkersCompensation|ProductsLiability|PrivatePassengerAutoNoFault|OtherPrivatePassengerAutoLiability|CommercialAutoNoFault|OtherCommercialAutoLiability|PrivatePassengerAutoPhysicalDamage|CommercialAutoPhysicalDamage|Aircraft|Fidelity|Surety|BurglaryAndTheft|BoilerAndMachinery|Credit|International|Warranty</xsl:text>
    </xsl:variable>
    
        <xsl:template match="/">
        <xsl:for-each select="tokenize($LOB_Hier, '\|')">
            <xsl:call-template name="repeatable">
                <xsl:with-param name="LOB_Hier" select="tokenize($LOB_Hier,'\|')" />
            </xsl:call-template> 
           
        </xsl:for-each>
    </xsl:template>
    
    <xsl:template name="repeatable" match="RegionLOBs">
        <xsl:param name="LOB_Hier"/>
        <LOBNotFound>
            <xsl:for-each select="Group">
                <Region>
                    <xsl:value-of select="Region"/>
                </Region>
                <xsl:variable name="GroupLOB" select="LOB"/>
                <MissingLOBs>
                    <xsl:choose>
                        <xsl:when test="contains($GroupLOB,$LOB_Hier)">
                            <xsl:text></xsl:text>
                        </xsl:when>
                        <xsl:otherwise>
                            <xsl:value-of select="$LOB_Hier"/>
                        </xsl:otherwise>
                    </xsl:choose>

                </MissingLOBs>
                
            </xsl:for-each>
        </LOBNotFound>      
        
    </xsl:template>
</xsl:stylesheet>

我在运行此转换时遇到的错误是“子轴的上下文项所需的项类型是 node();提供的值“Fire”是一个原子值'

如何让它发挥作用?感谢任何解决建议。

谢谢

【问题讨论】:

    标签: xslt-2.0


    【解决方案1】:

    您在xsl:for-each select="tokenize($LOB_Hier, '\|')" 内部使用xsl:call-template,也就是说,在一系列字符串(字符串是原子值)上的for-each 内部,因此在您调用的模板中,上下文项是一个简单的字符串。然而,你假装你想处理名为 Group 的子元素,例如xsl:for-each select="Group" 在被调用的模板内,可能是某个输入节点的子元素。

    所以在xsl:for-each select="tokenize($LOB_Hier, '\|')"之前,你需要存储一个节点,例如带有&lt;xsl:variable name="root-node" select="."/&gt; 的上下文节点并将其作为参数传递给您调用的模板,然后在您想要处理Group 子级的地方使用$root-node/Group,或者如果我正确阅读了您的文档结构,可能更确切地说是$root-node/RegionLOBs/Group

    【讨论】:

    • 谢谢@Martin Honnen。现在它给了我一个问题,说'不允许将多个项目的序列作为 fn:contains() ("Fire", "AlliedLines") 的第二个参数'
    • @VJain,我认为 Mads 在他的回复中也已经涵盖了这一点,并就如何避免它提出了建议,所以看看那里。
    • 或者说明你希望&lt;xsl:param name="LOB_Hier"/&gt; 在被调用的模板中具有什么样的值,你想传递完整的字符串值序列,就像你对&lt;xsl:with-param name="LOB_Hier" select="tokenize($LOB_Hier,'\|')" /&gt; 所做的那样,或者你也许只想传入一个值,例如for-each 的上下文项,例如&lt;xsl:with-param name="LOB_Hier" select="."/&gt;?
    【解决方案2】:

    xsl:for-each 的上下文是一个原子值,而不是 XML 结构中的一个节点。因此,当您按名称调用“可重复”模板,然后在其中尝试使用 XPath 时,它会抱怨您不能在字符串上使用 XPath 轴。

    您可以创建一个选择 RegionLOBs 元素的变量,然后应用模板选择该变量作为上下文,而不是按名称调用。

    此外,还有一个问题:&lt;xsl:when test="contains($GroupLOB,$LOB_Hier)"&gt;

    $LOB_Hier 有一个值序列,所以它抱怨你不能为contains() 使用序列。您可以改为按空格标记 GoupLOB 并测试值集以查看是否存在交集:&lt;xsl:when test="tokenize($GroupLOB, ' ') = $LOB_Hier"&gt;

    应用于您的样式表:

    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wd="urn:com.workday.report/CR_Page_14_EMC"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:statutorytype="us-stat-2020-annual-stmt-pc"
        xmlns:xbrli="http://www.xbrl.org/2001/instance" xmlns:iso4217="http://www.xe.com/iso4217.htm"
        xmlns:stat="urn:www-iasa-org/tempuri" exclude-result-prefixes="xs wd" version="2.0">
        
        <xsl:output omit-xml-declaration="yes" indent="yes" method="xml"/>
        
        <xsl:variable name="single_quote">
            <xsl:text>'</xsl:text>
        </xsl:variable>
        <xsl:variable name="ampersand">
            <xsl:text>&amp;</xsl:text>
        </xsl:variable>
        
        <xsl:variable name="LOB_Hier">
            <xsl:text>Fire|AlliedLines|MultiplePerilCrop|FederalFlood|PrivateCrop|PrivateFlood|FarmownersMultiplePeril|HomeownersMultiplePeril|CommercialMultiplePerilNonLiabilityPortion|CommercialMultiplePerilLiabilityPortion|MortgageGuaranty|OceanMarine|InlandMarine|FinancialGuaranty|MedicalProfessionalLiability|Earthquake|GroupAccidentAndHealth|CreditAccidentAndHealth|CollectivelyRenewableAccidentAndHealth|NonCancelableAccidentAndHealth|GuaranteedRenewableAccidentAndHealth|NonRenewableForStatedReasonsOnly|OtherAccidentOnly|MedicareTitleXviiiExemptFromStateTaxesOrFees|AllOtherAccidentAndHealth|FederalEmployeesHealthBenefitsPlanPremium|WorkersCompensation|OtherLiabilityOccurrence|OtherLiabilityClaimsMade|ExcessWorkersCompensation|ProductsLiability|PrivatePassengerAutoNoFault|OtherPrivatePassengerAutoLiability|CommercialAutoNoFault|OtherCommercialAutoLiability|PrivatePassengerAutoPhysicalDamage|CommercialAutoPhysicalDamage|Aircraft|Fidelity|Surety|BurglaryAndTheft|BoilerAndMachinery|Credit|International|Warranty</xsl:text>
        </xsl:variable>
        
        <xsl:template match="/">
            <xsl:variable name="context" select="RegionLOBs"/>
            <xsl:for-each select="tokenize($LOB_Hier, '\|')">
                <xsl:apply-templates select="$context">
                    <xsl:with-param name="LOB_Hier" select="tokenize($LOB_Hier,'\|')" />
                </xsl:apply-templates> 
                
            </xsl:for-each>
        </xsl:template>
        
        <xsl:template name="repeatable" match="RegionLOBs">
            <xsl:param name="LOB_Hier"/>
            <LOBNotFound>
                <xsl:for-each select="Group">
                    <Region>
                        <xsl:value-of select="Region"/>
                    </Region>
                    <xsl:variable name="GroupLOB" select="LOB"/>
                     <MissingLOBs>
                       <xsl:sequence select="$LOB_Hier[not(. = tokenize($GroupLOB, ' '))]"/>
                     </MissingLOBs>
                </xsl:for-each>
            </LOBNotFound>      
            
        </xsl:template>
    </xsl:stylesheet>
    

    【讨论】:

    • 感谢马德斯汉森。我尝试使用它,但输出并没有给我任何区域的 LOB 差异(MissingLOB 中没有值)。
    • 您希望它测试或产生什么?看起来您正在测试 $GroupLOB 中是否包含任何 $LOB_Hier 值,并且您的 LOB 具有该 LOB_Hier 列表中的值。
    • 我想列出 $LOB_Hier 中与每个区域的 $GroupLOB 中的内容不匹配的值。示例 - 对于区域 AL,我们在 GroupLOB 中没有 MultiplePerilCrop、FederalFlood、PrivateCrop、PrivateFlood 等值。所以我想从 LOB_Hier 列表中输出所有这些值。
    • 好的,我明白了。我已经更新了答案以实现这一目标。
    • 谢谢你,Mads。它有效!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 2021-10-12
    • 1970-01-01
    • 2019-12-08
    • 2020-07-26
    相关资源
    最近更新 更多