条件for-each循环在xslt中不起作用

时间:2015-10-08 13:01:59

标签: xslt-1.0 bpel

示例数据:

    <school>
<student_details>
<student>
<id>1</id>
<name>manju</name>
<subject>
<subject_name>maths</subject_name>
</subject>
<subject>
<subject_name>science</subject_name>
</subject>
</student>
<student>
<id>2</id>
<name>raghu</name>
<subject>
<subject_name>maths</subject_name>
</subject>
<subject>
<subject_name>sanskrit</subject_name>
</subject>
</student>
<student>
<id>3</id>
<name>vijay</name>
<subject>
<subject_name>maths</subject_name>
</subject>
</student>
<student>
<id>4</id>
<name>sunil</name>
<subject>
<subject_name>sanskrit</subject_name>
</subject>
</student>
<student>
<id>5</id>
<name>anil</name>
<subject>
<subject_name>social</subject_name>
</subject>
<subject>
<subject_name>english</subject_name>
</subject>
<subject>
<subject_name>Kannada</subject_name>
</subject>
</student>

<student>
<id>6</id>
<name>midhun</name>
<subject>
<subject_name>social</subject_name>
</subject>
<subject>
<subject_name>sanskrit</subject_name>
</subject>
<subject>
<subject_name>Kannada</subject_name>
</subject>
</student>

</student_details>

<exclude>
<exclude_subjects>
<subject_name>maths</subject_name>
</exclude_subjects>
<exclude_subjects> 
<subject_name>science</subject_name>
</exclude_subjects>
</exculde>


<extra>
<extra_subjects>
<subject_name>sanskrit</subject_name>
</exclude_subjects>
<exclude_subjects> 
<subject_name>arabic</subject_name>
</extra_subjects>
</extra>
</school>

下面是我的xsd:

<schema>
    <element name="school">
    <complexType>
    <sequence>
    <element name="student_details>
<complexType>
    <sequence>
    <element name="student" maxOccurs="unbounded">
    <complexType>
    <sequence>
    <element name="Id" type="sting"/>
    <element name="name" type="sting"/>
    <element name="subject" maxOccurs="unbounded">
    <complexType>
    <sequence>
    <element name="subject_name" type="sting"/>
    </complexType>
    </sequence>
    </element>
    </complexType>
    <sequence>
    </element>
</complexType>
    <sequence>
    </element>

    <element name="exclude">
<complexType>
    <sequence>
    <element name="exclude_subjects" maxOccurs="unbounded">
    <complexType>
    <sequence>
    <element name="subject_name" type="sting"/>
    </complexType>
    </sequence>
    </element>
    </complexType>
    <sequence>
    </element>

 <element name="extra">
<complexType>
    <sequence>
    <element name="extra_subjects" maxOccurs="unbounded">
    <complexType>
    <sequence>
    <element name="subject_name" type="sting"/>
    </complexType>
    </sequence>
    </element>
    </complexType>
    <sequence>
    </element>

</complexType>
    <sequence>
    </element>
    </schema>

下面是我的xslt:

<xsl:template match="/school">
    <output>
        <xsl:for-each select="student_details/student[subject[not(subject_name = ../../../exclude/exclude_subjects/subject_name and subject_name = ../../../extra/extra_subjects/subject_name)]]">
            <xsl:copy-of select="name"/>
        </xsl:for-each>
    </output>
</xsl:template>

我希望在满足条件时获得一个输出。这是示例xml。

我的要求是,如果学生包含exclude_subjects中没有的任何科目,或者如果学生包含extra_subjects中存在的科目,那么该学生姓名应该被分配给目标而不会重复。

例如:在上面给出的样本中,xml anil,sunil和midhun名称应该分配给目标。

请帮忙......

0 个答案:

没有答案