Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XSLT中的多个条件不起作用_Xml_Xslt - Fatal编程技术网

Xml XSLT中的多个条件不起作用

Xml XSLT中的多个条件不起作用,xml,xslt,Xml,Xslt,我有以下XML: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <bp_list xmlns="http://example.com/2012/03/01/canonical/BusinessPartner"> <total_count>221</total_count> <bp> <bp_id>10</bp_id> <bp_

我有以下XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bp_list xmlns="http://example.com/2012/03/01/canonical/BusinessPartner">
<total_count>221</total_count>
<bp>
    <bp_id>10</bp_id>
    <bp_name>aad</bp_name>
    <last_changed_date>2016-12-20T02:38:14</last_changed_date>
    <location>
        <location_id>200020</location_id>
        <location_name>gfh</location_name>
        <is_location_owner>true</is_location_owner>
        <location_registration_status>
            <registration_status_id>7202</registration_status_id>
            <registration_status_name>Unregistered</registration_status_name>
            <registration_status_effective_date>2015-07-24T00:00:00</registration_status_effective_date>
        </location_registration_status>
        <location_status>
            <name>In Progress</name>
        </location_status>
        <marked_for_delete>false</marked_for_delete>
        <bp_location>
            <bp>
                <bp_id>10</bp_id>
            </bp>
            <bp_location_capability>
                <is_primary_capability>true</is_primary_capability>
                <location_function_capability_category_id>50</location_function_capability_category_id>
                <location_function_capability_name>hq</location_function_capability_name>
            </bp_location_capability>
            <bp_location_capability>
                <is_primary_capability>true</is_primary_capability>
                <location_function_capability_category_id>53</location_function_capability_category_id>
                <location_function_capability_name>Remit To</location_function_capability_name>
            </bp_location_capability>
        </bp_location>
        <address>
            <id>103754</id>
            <line1>someadress</line1>
            <city>Columbus</city>
            <postal_code>47201</postal_code>
            <country_code>US</country_code>
            <country_name>UNITED STATES</country_name>
            <subdivision_code>US-IN     </subdivision_code>
            <subdivision_name>Indiana</subdivision_name>
            <validation_status>0</validation_status>
        </address>
        <location_type>
            <location_type_id>5003</location_type_id>
            <location_type_name>Business Office</location_type_name>
        </location_type>
        <location_type>
            <location_type_id>5002</location_type_id>
            <location_type_name>Warehouse</location_type_name>
        </location_type>
        <location_capability>
            <location_capability_id>13</location_capability_id>
            <location_capability_name>Stores Cartons</location_capability_name>
            <location_capability_category>1</location_capability_category>
        </location_capability>
        <location_capability>
            <location_capability_id>50</location_capability_id>
            <location_capability_name>hq</location_capability_name>
            <location_capability_category>2</location_capability_category>
        </location_capability>
        <location_capability>
            <location_capability_id>53</location_capability_id>
            <location_capability_name>Remit To</location_capability_name>
            <location_capability_category>2</location_capability_category>
        </location_capability>
    </location>
    <location>
        <location_id>16677059</location_id>
        <location_name>ggg(something Co. Ltd)</location_name>
        <is_location_owner>false</is_location_owner>
        <location_registration_status>
            <registration_status_id>7202</registration_status_id>
            <registration_status_name>Unregistered</registration_status_name>
        </location_registration_status>
        <location_status>
            <name>In Progress</name>
        </location_status>
        <marked_for_delete>false</marked_for_delete>
        <bp_location>
            <bp>
                <bp_id>29303</bp_id>
            </bp>
        </bp_location>
        <address>
            <id>122088</id>
            <line1>No.139 abc.</line1>
            <line2>down the woods</line2>
            <city>ff</city>
            <postal_code>4567</postal_code>
            <country_code>CN</country_code>
            <country_name>CHINA</country_name>
            <subdivision_code>r5     </subdivision_code>
            <subdivision_name>Fujian</subdivision_name>
            <validation_status>1702</validation_status>
        </address>
        <location_type>
            <location_type_id>5001</location_type_id>
            <location_type_name>Factory</location_type_name>
        </location_type>
        <location_capability>
            <location_capability_id>10</location_capability_id>
            <location_capability_name>Produces Product</location_capability_name>
            <location_capability_category>1</location_capability_category>
        </location_capability>
    </location>
    </bp>

221
10
aad
2016-12-20T02:38:14
200020
gfh
真的
7202
未注册
2015-07-24T00:00:00
进行中
假的
10
真的
50
总部
真的
53
汇至
103754
某处
哥伦布
47201
美国
美国
美方
印第安纳州
0
5003
营业厅
5002
仓库
13
储存纸箱
1.
50
总部
2.
53
汇至
2.
16677059
ggg(某物有限公司)
假的
7202
未注册
进行中
假的
29303
122088
第139号abc。
森林深处
ff
4567
CN
中国
r5
福建省
1702
5001
工厂
10
生产产品
1.
我必须选择地址的第1行和第2行,其中“主要能力”为真,“位置功能能力”为总部

在这种特殊情况下,我不应该在第2行中获取任何内容,因为地址没有任何内容(对于满足条件的上述地址)。然而,我的XSLT正在从下一个地址获取第2行。这让我相信我编写的条件不起作用。虽然我在第1行中得到了预期的输出,但这只是因为它是第一个地址。下面是我的XSLT:

<xsl:stylesheet version="1.0"     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:ns="http://target.com/2012/03/01/canonical/BusinessPartner">
<xsl:strip-space elements="*" />
<xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">bp_name|bp_id|line1|line2
    <xsl:for-each select="ns:bp_list/ns:bp">
        <xsl:variable name="bp_name" select="normalize-space(ns:bp_name)"/>
        <xsl:value-of select="$bp_name"/>|<xsl:value-of select="normalize-space(ns:bp_id)"/>|<xsl:if test="((ns:location/ns:bp_location/ns:bp_location_capability/ns:is_primary_capability = 'true') and (ns:location/ns:bp_location/ns:bp_location_capability/ns:location_function_capability_name = 'hq'))"> <xsl:value-of select="normalize-space(ns:location/ns:address/ns:line1)"/></xsl:if>|<xsl:if test="((ns:location/ns:bp_location/ns:bp_location_capability/ns:is_primary_capability = 'true') and (ns:location/ns:bp_location/ns:bp_location_capability/ns:location_function_capability_name = 'hq'))"> <xsl:value-of select="normalize-space(ns:location/ns:address/ns:line2)"/><xsl:text>&#xA;</xsl:text>
    </xsl:for-each></xsl:template>
 </xsl:stylesheet>

bp|U名称| bp|U id |第1行|第2行
|||和#xA;

这里会出现什么问题?我该如何解决这个问题?

我认为问题在于您正在检查某个位置是否符合您的条件,但您没有专门针对该位置

您可以将条件移动到
位置
上的谓词中,并仅输出该位置的地址

例如

XML输入

<bp_list xmlns="http://example.com/2012/03/01/canonical/BusinessPartner">
    <total_count>221</total_count>
    <bp>
        <bp_id>10</bp_id>
        <bp_name>aad</bp_name>
        <last_changed_date>2016-12-20T02:38:14</last_changed_date>
        <location>
            <location_id>200020</location_id>
            <location_name>gfh</location_name>
            <is_location_owner>true</is_location_owner>
            <location_registration_status>
                <registration_status_id>7202</registration_status_id>
                <registration_status_name>Unregistered</registration_status_name>
                <registration_status_effective_date>2015-07-24T00:00:00</registration_status_effective_date>
            </location_registration_status>
            <location_status>
                <name>In Progress</name>
            </location_status>
            <marked_for_delete>false</marked_for_delete>
            <bp_location>
                <bp>
                    <bp_id>10</bp_id>
                </bp>
                <bp_location_capability>
                    <is_primary_capability>true</is_primary_capability>
                    <location_function_capability_category_id>50</location_function_capability_category_id>
                    <location_function_capability_name>hq</location_function_capability_name>
                </bp_location_capability>
                <bp_location_capability>
                    <is_primary_capability>true</is_primary_capability>
                    <location_function_capability_category_id>53</location_function_capability_category_id>
                    <location_function_capability_name>Remit To</location_function_capability_name>
                </bp_location_capability>
            </bp_location>
            <address>
            <id>103754</id>
            <line1>someadress</line1>
            <city>Columbus</city>
            <postal_code>47201</postal_code>
            <country_code>US</country_code>
            <country_name>UNITED STATES</country_name>
            <subdivision_code>US-IN     </subdivision_code>
            <subdivision_name>Indiana</subdivision_name>
            <validation_status>0</validation_status>
        </address>
            <location_type>
                <location_type_id>5003</location_type_id>
                <location_type_name>Business Office</location_type_name>
            </location_type>
            <location_type>
                <location_type_id>5002</location_type_id>
                <location_type_name>Warehouse</location_type_name>
            </location_type>
            <location_capability>
                <location_capability_id>13</location_capability_id>
                <location_capability_name>Stores Cartons</location_capability_name>
                <location_capability_category>1</location_capability_category>
            </location_capability>
            <location_capability>
                <location_capability_id>50</location_capability_id>
                <location_capability_name>hq</location_capability_name>
                <location_capability_category>2</location_capability_category>
            </location_capability>
            <location_capability>
                <location_capability_id>53</location_capability_id>
                <location_capability_name>Remit To</location_capability_name>
                <location_capability_category>2</location_capability_category>
            </location_capability>
        </location>
        <location>
            <location_id>16677059</location_id>
            <location_name>ggg(something Co. Ltd)</location_name>
            <is_location_owner>false</is_location_owner>
            <location_registration_status>
                <registration_status_id>7202</registration_status_id>
                <registration_status_name>Unregistered</registration_status_name>
            </location_registration_status>
            <location_status>
                <name>In Progress</name>
            </location_status>
            <marked_for_delete>false</marked_for_delete>
            <bp_location>
                <bp>
                    <bp_id>29303</bp_id>
                </bp>
            </bp_location>
            <address>
            <id>122088</id>
            <line1>No.139 abc.</line1>
            <line2>down the woods</line2>
            <city>ff</city>
            <postal_code>4567</postal_code>
            <country_code>CN</country_code>
            <country_name>CHINA</country_name>
            <subdivision_code>r5     </subdivision_code>
            <subdivision_name>Fujian</subdivision_name>
            <validation_status>1702</validation_status>
        </address>
            <location_type>
                <location_type_id>5001</location_type_id>
                <location_type_name>Factory</location_type_name>
            </location_type>
            <location_capability>
                <location_capability_id>10</location_capability_id>
                <location_capability_name>Produces Product</location_capability_name>
                <location_capability_category>1</location_capability_category>
            </location_capability>
        </location>
    </bp>
</bp_list>
bp_name|bp_id|line1|line2
aad|10|someadress|

我的回答有用吗?是的,丹尼尔,谢谢。你的评估是对的,我能解决我的问题,请考虑。另见。
bp_name|bp_id|line1|line2
aad|10|someadress|