在XSL中使用foreach的问题

时间:2016-09-03 07:15:03

标签: xml xslt xml-parsing xslt-1.0 xsl-fo

 <?xml version="1.0" encoding="utf-8"?>
 <Processtype class="test" version="str1234">
 <Header>
 <MYID>str1234</MYID>
 </Header>
 <Body>
  <Action method="Request" type="PROV">
 <Approval>
 <FirsApproval>1234567890</FirstApproval1>
 <Linked123>
 <PONumber>12345</PONumber>
 </Linked123>
 <Version>123</Version>
 <Country level="12"  hasModified="true" isSelected="true">**
 <Year>1999</Year>
 <Month>Jan</MonthShortName>
 </Country>
 <Version>123</Version>
 <Country level="12"  hasModified="true" isSelected="true">
 <Year>1990</Year>
 <Month>May</MonthShortName>
 </Country>
 </Approval>
 </Action>
 </Body>
 </Processtype>

对于上面的XML,我必须生成XSL并在xsl中进行一些验证(比如字段不为空).Below是我的XSL文件,它是我从Above XML生成的。

  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/ProcessType">
<xsl:choose>

         <xsl:when test= "./Body/Action/approval/FirstApproval='' ">Invalid XML-FirstApproval field is blank   </xsl:when >
         <xsl:when test= "./Body/Action/PONumber='' ">Invalid XML- PO numumber field is blank  </xsl:when >

        <xsl:otherwise>Valid XML</xsl:otherwise>

 </xsl:choose>
 </xsl:template>
 </xsl:stylesheet>

我成功地对这些不重复的字段进行了验证但是对于下面的部分我想要使用foreach(仅在下面这部分,它是上面xml的一部分)因为它重复两次

      <Country level="12"  hasModified="true" isSelected="true">**
       <Year>1999</Year>
       <Month>Jan</MonthShortName>
        </Country>
        <Country level="12"  hasModified="true" isSelected="true">
       <Year>1990</Year>
       <Month>May</MonthShortName>
          </Country>

第一个查询: - 如何使用现有的xsl代码

将foreach用于上述部分

第二个查询: - 我想在单个变量中存储高于错误(即无效的XML-FirstApproval字段为空),以便我将恢复为用户(WITH THAT VALUE OF VARIABLE)     并告诉他,在你的xml中,这些字段显示错误并请    更正这些字段值并使用正确的xml恢复。

请建议。

许多Thnaks,   SC

0 个答案:

没有答案