2015-08-08 2 views
0

Я пытаюсь исправить эту проблему с несколькими значениями для этого кода XML/XSLT, но, похоже, не может понять, что случилось. Для некоторых сотрудников (не для всех) их запись в выходном файле содержит несколько значений SSN. Это вызывает проблему с принимающей системой, потому что она ожидает только одного значения. Любая помощь будет отличной, я ценю то, что я действительно застрял в этом, и вам нужно представить отчет за 36 часов. Огромное спасибо. (Прилагаются код XML-файл и код XSLT)Удаление нескольких значений из XSLT

XML:

<?xml version="1.0" encoding="UTF-8"?> 
    <pi:Payroll_Extract_Employees xmlns:pi="urn:com.workday/picof"> 
     <pi:PayGroup> 
      <pi:Header> 
       <pi:Version>18</pi:Version> 
       <pi:Payroll_Company_ID>25G</pi:Payroll_Company_ID> 
       <pi:Payroll_Company_Name>Acme.net</pi:Payroll_Company_Name> 
       <pi:Pay_Group_ID>G85D6W87D</pi:Pay_Group_ID> 
       <pi:Pay_Group_Name>G85D6W87D Semi-monthly</pi:Pay_Group_Name> 
       <pi:Pay_Period_Start>2013-02-16-08:00</pi:Pay_Period_Start> 
       <pi:Pay_Period_End>2013-02-28-08:00</pi:Pay_Period_End> 
       <pi:Updated_From>2013-02-28T18:00:15.171-08:00</pi:Updated_From> 
       <pi:Updated_To>2013-03-07T12:25:36.860-08:00</pi:Updated_To> 
       <pi:All_Effective>false</pi:All_Effective> 
      </pi:Header> 
      <pi:Employee> 
       <pi:Summary> 
        <pi:Employee_ID>1332</pi:Employee_ID> 
        <pi:Name>Robert Paulson</pi:Name> 
        <pi:Payroll_Company_ID>25G</pi:Payroll_Company_ID> 
        <pi:Payroll_Company_Name>Acme.net</pi:Payroll_Company_Name> 
        <pi:Pay_Group_ID>G85D6W87D</pi:Pay_Group_ID> 
        <pi:Pay_Group_Name>G85D6W87D Semi-monthly</pi:Pay_Group_Name> 
       </pi:Summary> 
       <pi:Personal> 
        <pi:First_Name>Robert</pi:First_Name> 
        <pi:Middle_Name>B</pi:Middle_Name> 
        <pi:Last_Name>Paulson</pi:Last_Name> 
        <pi:Gender>M</pi:Gender> 
        <pi:Birth_Date>1972-07-19</pi:Birth_Date> 
        <pi:Marital_Status>S</pi:Marital_Status> 
        <pi:First_Address_Line_Data pi:Label="Address Line 1" pi:Type="ADDRESS_LINE_1">5555 
         Marcos Street</pi:First_Address_Line_Data> 
        <pi:First_Municipality>San Diego</pi:First_Municipality> 
        <pi:First_Region>CA</pi:First_Region> 
        <pi:First_Postal_Code>92109</pi:First_Postal_Code> 
        <pi:Area_Code>619</pi:Area_Code> 
        <pi:Phone_Number>5559999</pi:Phone_Number> 
        <pi:First_Email_Address>[email protected]</pi:First_Email_Address> 
       </pi:Personal> 
       <pi:Status> 
        <pi:Employee_Status>A</pi:Employee_Status> 
        <pi:Hire_Date>2011-02-28</pi:Hire_Date> 
        <pi:Original_Hire_Date>2011-02-28</pi:Original_Hire_Date> 
        <pi:Continuous_Service_Date>2011-02-28</pi:Continuous_Service_Date> 
        <pi:Seniority_Date>2011-02-28</pi:Seniority_Date> 
       </pi:Status> 
       <pi:Position> 
        <pi:Operation>NONE</pi:Operation> 
        <pi:Worker_Type>FTR</pi:Worker_Type> 
        <pi:Job_Exempt>1</pi:Job_Exempt> 
        <pi:Scheduled_Weekly_Hours>40</pi:Scheduled_Weekly_Hours> 
        <pi:Default_Weekly_Hours>40</pi:Default_Weekly_Hours> 
        <pi:Pay_Cycle_Hours>86.67</pi:Pay_Cycle_Hours> 
        <pi:Pay_Rate_Type>H</pi:Pay_Rate_Type> 
        <pi:Compensation_Effective_Date>2013-01-01</pi:Compensation_Effective_Date> 
        <pi:Total_Base_Pay>27.2645</pi:Total_Base_Pay> 
        <pi:Base_Pay_Currency>USD</pi:Base_Pay_Currency> 
        <pi:Base_Pay_Frequency>H</pi:Base_Pay_Frequency> 
        <pi:Organization_One>1500</pi:Organization_One> 
        <pi:Workers_Compensation_Code>8810</pi:Workers_Compensation_Code> 
        <pi:Business_Site>San Diego Office</pi:Business_Site> 
        <pi:Business_Site_Name>San Diego Office</pi:Business_Site_Name> 
        <pi:Business_Site_Region>CA</pi:Business_Site_Region> 
        <pi:Supervisor_Name>Jed Sanders (1402)</pi:Supervisor_Name> 
       </pi:Position> 
       <pi:Identifier> 
        <pi:Operation>REMOVE</pi:Operation> 
        <pi:Identifier_Type>SSN</pi:Identifier_Type> 
        <pi:Identifier_Value>123456788</pi:Identifier_Value> 
       </pi:Identifier> 
       <pi:Identifier> 
        <pi:Operation>ADD</pi:Operation> 
        <pi:Identifier_Type>SSN</pi:Identifier_Type> 
        <pi:Identifier_Value>111111111</pi:Identifier_Value> 
       </pi:Identifier> 
       <pi:Identifier> 
        <pi:Operation>NONE</pi:Operation> 
        <pi:Identifier_Type>ADP_No</pi:Identifier_Type> 
        <pi:Identifier_Value>541</pi:Identifier_Value> 
       </pi:Identifier> 
       <pi:Additional_Information> 
        <pi:PreferredFirstName>Bobby</pi:PreferredFirstName> 
       </pi:Additional_Information> 
      </pi:Employee> 
      <pi:Employee> 
       <pi:Summary> 
        <pi:Employee_ID>1842</pi:Employee_ID> 
        <pi:Name>James Johnson</pi:Name> 
        <pi:Payroll_Company_ID>25G</pi:Payroll_Company_ID> 
        <pi:Payroll_Company_Name>Acme.net</pi:Payroll_Company_Name> 
        <pi:Pay_Group_ID>G85D6W87D</pi:Pay_Group_ID> 
        <pi:Pay_Group_Name>G85D6W87D Semi-monthly</pi:Pay_Group_Name> 
       </pi:Summary> 
       <pi:Personal> 
        <pi:First_Name>James</pi:First_Name> 
        <pi:Middle_Name>B</pi:Middle_Name> 
        <pi:Last_Name>Johnson</pi:Last_Name> 
        <pi:Gender>M</pi:Gender> 
        <pi:Birth_Date>1982-09-17</pi:Birth_Date> 
        <pi:Marital_Status>S</pi:Marital_Status> 
        <pi:First_Address_Line_Data pi:Label="Address Line 1" pi:Type="ADDRESS_LINE_1">1111 
         Hampton Way</pi:First_Address_Line_Data> 
        <pi:First_Municipality>San Diego</pi:First_Municipality> 
        <pi:First_Region>CA</pi:First_Region> 
        <pi:First_Postal_Code>92109</pi:First_Postal_Code> 
        <pi:Area_Code>619</pi:Area_Code> 
        <pi:Phone_Number>5551234</pi:Phone_Number> 
        <pi:First_Email_Address>[email protected]</pi:First_Email_Address> 
       </pi:Personal> 
       <pi:Status> 
        <pi:Employee_Status>A</pi:Employee_Status> 
        <pi:Hire_Date>2010-03-28</pi:Hire_Date> 
        <pi:Original_Hire_Date>2010-03-28</pi:Original_Hire_Date> 
        <pi:Continuous_Service_Date>2010-03-28</pi:Continuous_Service_Date> 
        <pi:Seniority_Date>2010-03-28</pi:Seniority_Date> 
       </pi:Status> 
       <pi:Position> 
        <pi:Operation>REMOVE</pi:Operation> 
        <pi:Worker_Type>FTR</pi:Worker_Type> 
        <pi:Job_Exempt>1</pi:Job_Exempt> 
        <pi:Scheduled_Weekly_Hours>40</pi:Scheduled_Weekly_Hours> 
        <pi:Default_Weekly_Hours>40</pi:Default_Weekly_Hours> 
        <pi:Pay_Cycle_Hours>86.67</pi:Pay_Cycle_Hours> 
        <pi:Pay_Rate_Type>H</pi:Pay_Rate_Type> 
        <pi:Compensation_Effective_Date>2010-03-28</pi:Compensation_Effective_Date> 
        <pi:Total_Base_Pay>27.2645</pi:Total_Base_Pay> 
        <pi:Base_Pay_Currency>USD</pi:Base_Pay_Currency> 
        <pi:Base_Pay_Frequency>H</pi:Base_Pay_Frequency> 
        <pi:Organization_One>1500</pi:Organization_One> 
        <pi:Workers_Compensation_Code>8810</pi:Workers_Compensation_Code> 
        <pi:Business_Site>San Diego Office</pi:Business_Site> 
        <pi:Business_Site_Name>San Diego Office</pi:Business_Site_Name> 
        <pi:Business_Site_Region>CA</pi:Business_Site_Region> 
        <pi:Supervisor_Name>Jed Sanders (1402)</pi:Supervisor_Name> 
       </pi:Position> 
       <pi:Position> 
        <pi:Operation>ADD</pi:Operation> 
        <pi:Worker_Type>FTR</pi:Worker_Type> 
        <pi:Job_Exempt>1</pi:Job_Exempt> 
        <pi:Scheduled_Weekly_Hours>40</pi:Scheduled_Weekly_Hours> 
        <pi:Default_Weekly_Hours>40</pi:Default_Weekly_Hours> 
        <pi:Pay_Cycle_Hours>86.67</pi:Pay_Cycle_Hours> 
        <pi:Pay_Rate_Type>S</pi:Pay_Rate_Type> 
        <pi:Compensation_Effective_Date>2013-01-01</pi:Compensation_Effective_Date> 
        <pi:Total_Base_Pay>95123</pi:Total_Base_Pay> 
        <pi:Base_Pay_Currency>USD</pi:Base_Pay_Currency> 
        <pi:Base_Pay_Frequency>S</pi:Base_Pay_Frequency> 
        <pi:Organization_One>1500</pi:Organization_One> 
        <pi:Workers_Compensation_Code>8810</pi:Workers_Compensation_Code> 
        <pi:Business_Site>San Diego Office</pi:Business_Site> 
        <pi:Business_Site_Name>San Diego Office</pi:Business_Site_Name> 
        <pi:Business_Site_Region>CA</pi:Business_Site_Region> 
        <pi:Supervisor_Name>Jed Sanders (1402)</pi:Supervisor_Name> 
       </pi:Position> 
       <pi:Identifier> 
        <pi:Operation>NONE</pi:Operation> 
        <pi:Identifier_Type>SSN</pi:Identifier_Type> 
        <pi:Identifier_Value>222222222</pi:Identifier_Value> 
       </pi:Identifier> 
       <pi:Identifier> 
        <pi:Operation>NONE</pi:Operation> 
        <pi:Identifier_Type>ADP_No</pi:Identifier_Type> 
        <pi:Identifier_Value>543</pi:Identifier_Value> 
       </pi:Identifier> 
       <pi:Additional_Information> 
        <pi:PreferredFirstName>Jimmy</pi:PreferredFirstName> 
       </pi:Additional_Information> 
      </pi:Employee> 
     </pi:PayGroup> 
     <pi:PayGroup> 
      <pi:Header> 
       <pi:Version>18</pi:Version> 
       <pi:Payroll_Company_ID>NMA</pi:Payroll_Company_ID> 
       <pi:Payroll_Company_Name>Acme.net</pi:Payroll_Company_Name> 
       <pi:Pay_Group_ID>DS87D7RR9</pi:Pay_Group_ID> 
       <pi:Pay_Group_Name>DS87D7RR9 Weekly</pi:Pay_Group_Name> 
       <pi:Pay_Period_Start>2013-02-16-08:00</pi:Pay_Period_Start> 
       <pi:Pay_Period_End>2013-02-28-08:00</pi:Pay_Period_End> 
       <pi:Updated_From>2013-02-28T18:00:15.171-08:00</pi:Updated_From> 
       <pi:Updated_To>2013-03-07T12:25:36.860-08:00</pi:Updated_To> 
       <pi:All_Effective>false</pi:All_Effective> 
      </pi:Header> 
      <pi:Employee> 
       <pi:Summary> 
        <pi:Employee_ID>1432</pi:Employee_ID> 
        <pi:Name>Steve Whatever</pi:Name> 
        <pi:Payroll_Company_ID>NMA</pi:Payroll_Company_ID> 
        <pi:Payroll_Company_Name>Acme.net</pi:Payroll_Company_Name> 
        <pi:Pay_Group_ID>DS87D7RR9</pi:Pay_Group_ID> 
        <pi:Pay_Group_Name>DS87D7RR9 Weekly</pi:Pay_Group_Name> 
       </pi:Summary> 
       <pi:Personal> 
        <pi:First_Name>Steve</pi:First_Name> 
        <pi:Middle_Name>B</pi:Middle_Name> 
        <pi:Last_Name>Whatever</pi:Last_Name> 
        <pi:Gender>M</pi:Gender> 
        <pi:Birth_Date>1985-07-19</pi:Birth_Date> 
        <pi:Marital_Status>S</pi:Marital_Status> 
        <pi:First_Address_Line_Data pi:Label="Address Line 1" pi:Type="ADDRESS_LINE_1">1234 
         Dreyfus Lane</pi:First_Address_Line_Data> 
        <pi:First_Municipality>San Diego</pi:First_Municipality> 
        <pi:First_Region>CA</pi:First_Region> 
        <pi:First_Postal_Code>92109</pi:First_Postal_Code> 
        <pi:Area_Code>619</pi:Area_Code> 
        <pi:Phone_Number>5558888</pi:Phone_Number> 
        <pi:First_Email_Address>[email protected]</pi:First_Email_Address> 
       </pi:Personal> 
       <pi:Status> 
        <pi:Employee_Status>A</pi:Employee_Status> 
        <pi:Hire_Date>2009-02-28</pi:Hire_Date> 
        <pi:Original_Hire_Date>2009-02-28</pi:Original_Hire_Date> 
        <pi:Continuous_Service_Date>2009-02-28</pi:Continuous_Service_Date> 
        <pi:Seniority_Date>2009-02-28</pi:Seniority_Date> 
       </pi:Status> 
       <pi:Position> 
        <pi:Operation>NONE</pi:Operation> 
        <pi:Worker_Type>FTR</pi:Worker_Type> 
        <pi:Job_Exempt>1</pi:Job_Exempt> 
        <pi:Scheduled_Weekly_Hours>40</pi:Scheduled_Weekly_Hours> 
        <pi:Default_Weekly_Hours>40</pi:Default_Weekly_Hours> 
        <pi:Pay_Cycle_Hours>86.67</pi:Pay_Cycle_Hours> 
        <pi:Pay_Rate_Type>H</pi:Pay_Rate_Type> 
        <pi:Compensation_Effective_Date>2013-01-01</pi:Compensation_Effective_Date> 
        <pi:Total_Base_Pay>27.2645</pi:Total_Base_Pay> 
        <pi:Base_Pay_Currency>USD</pi:Base_Pay_Currency> 
        <pi:Base_Pay_Frequency>H</pi:Base_Pay_Frequency> 
        <pi:Organization_One>1500</pi:Organization_One> 
        <pi:Workers_Compensation_Code>8810</pi:Workers_Compensation_Code> 
        <pi:Business_Site>San Diego Office</pi:Business_Site> 
        <pi:Business_Site_Name>San Diego Office</pi:Business_Site_Name> 
        <pi:Business_Site_Region>CA</pi:Business_Site_Region> 
        <pi:Supervisor_Name>Adam Sandler (5472)</pi:Supervisor_Name> 
       </pi:Position> 
       <pi:Identifier> 
        <pi:Operation>NONE</pi:Operation> 
        <pi:Identifier_Type>SSN</pi:Identifier_Type> 
        <pi:Identifier_Value>333333333</pi:Identifier_Value> 
       </pi:Identifier> 
       <pi:Identifier> 
        <pi:Operation>NONE</pi:Operation> 
        <pi:Identifier_Type>ADP_No</pi:Identifier_Type> 
        <pi:Identifier_Value>542</pi:Identifier_Value> 
       </pi:Identifier> 
      </pi:Employee> 
      <pi:Employee> 
       <pi:Summary> 
        <pi:Employee_ID>3333</pi:Employee_ID> 
        <pi:Name>James Anything</pi:Name> 
        <pi:Payroll_Company_ID>NMA</pi:Payroll_Company_ID> 
        <pi:Payroll_Company_Name>Acme.net</pi:Payroll_Company_Name> 
        <pi:Pay_Group_ID>DS87D7RR9</pi:Pay_Group_ID> 
        <pi:Pay_Group_Name>DS87D7RR9 Weekly</pi:Pay_Group_Name> 
       </pi:Summary> 
       <pi:Personal> 
        <pi:First_Name>James</pi:First_Name> 
        <pi:Middle_Name>B</pi:Middle_Name> 
        <pi:Last_Name>Anything</pi:Last_Name> 
        <pi:Gender>M</pi:Gender> 
        <pi:Birth_Date>1975-04-01</pi:Birth_Date> 
        <pi:Marital_Status>S</pi:Marital_Status> 
        <pi:First_Address_Line_Data pi:Label="Address Line 1" pi:Type="ADDRESS_LINE_1">9865 
         Wells Lane</pi:First_Address_Line_Data> 
        <pi:First_Municipality>San Diego</pi:First_Municipality> 
        <pi:First_Region>CA</pi:First_Region> 
        <pi:First_Postal_Code>92109</pi:First_Postal_Code> 
        <pi:Area_Code>619</pi:Area_Code> 
        <pi:Phone_Number>5557272</pi:Phone_Number> 
        <pi:First_Email_Address>[email protected]</pi:First_Email_Address> 
       </pi:Personal> 
       <pi:Status> 
        <pi:Employee_Status>A</pi:Employee_Status> 
        <pi:Hire_Date>2012-09-28</pi:Hire_Date> 
        <pi:Original_Hire_Date>2012-09-28</pi:Original_Hire_Date> 
        <pi:Continuous_Service_Date>2012-09-28</pi:Continuous_Service_Date> 
        <pi:Seniority_Date>2012-09-28</pi:Seniority_Date> 
       </pi:Status> 
       <pi:Position> 
        <pi:Operation>NONE</pi:Operation> 
        <pi:Worker_Type>FTR</pi:Worker_Type> 
        <pi:Job_Exempt>1</pi:Job_Exempt> 
        <pi:Scheduled_Weekly_Hours>40</pi:Scheduled_Weekly_Hours> 
        <pi:Default_Weekly_Hours>40</pi:Default_Weekly_Hours> 
        <pi:Pay_Cycle_Hours>86.67</pi:Pay_Cycle_Hours> 
        <pi:Pay_Rate_Type>H</pi:Pay_Rate_Type> 
        <pi:Compensation_Effective_Date>2013-01-01</pi:Compensation_Effective_Date> 
        <pi:Total_Base_Pay>27.2645</pi:Total_Base_Pay> 
        <pi:Base_Pay_Currency>USD</pi:Base_Pay_Currency> 
        <pi:Base_Pay_Frequency>H</pi:Base_Pay_Frequency> 
        <pi:Organization_One>1500</pi:Organization_One> 
        <pi:Workers_Compensation_Code>8810</pi:Workers_Compensation_Code> 
        <pi:Business_Site>San Diego Office</pi:Business_Site> 
        <pi:Business_Site_Name>San Diego Office</pi:Business_Site_Name> 
        <pi:Business_Site_Region>CA</pi:Business_Site_Region> 
        <pi:Supervisor_Name>Adam Sandler (5472)</pi:Supervisor_Name> 
       </pi:Position> 
       <pi:Identifier> 
        <pi:Operation>NONE</pi:Operation> 
        <pi:Identifier_Type>SSN</pi:Identifier_Type> 
        <pi:Identifier_Value>444444444</pi:Identifier_Value> 
       </pi:Identifier> 
       <pi:Identifier> 
        <pi:Operation>REMOVE</pi:Operation> 
        <pi:Identifier_Type>ADP_No</pi:Identifier_Type> 
        <pi:Identifier_Value>544</pi:Identifier_Value> 
       </pi:Identifier> 
       <pi:Identifier> 
        <pi:Operation>ADD</pi:Operation> 
        <pi:Identifier_Type>ADP_No</pi:Identifier_Type> 
        <pi:Identifier_Value>545</pi:Identifier_Value> 
       </pi:Identifier> 
      </pi:Employee> 
     </pi:PayGroup> 
    </pi:Payroll_Extract_Employees> 

XSLT Код:

<!-- <?xml version="1.0" encoding="UTF-8"?> --> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:pi="urn:com.workday/picof"> 

    <xsl:variable name="sep">,</xsl:variable> 

    <xsl:template match="pi:Payroll_Extract_Employees"> 
     <xsl:text>&#xa;</xsl:text> 
     <xsl:for-each select="pi:PayGroup"> 
      <xsl:text>Pay Group: </xsl:text> 
      <xsl:value-of select="pi:Header/pi:Pay_Group_Name"/> 
      <xsl:text>&#xa;</xsl:text> 

      <xsl:text>EmployeeID,Last_Name,First_Name,SSN,Hire_Date&#xa;</xsl:text> 
      <xsl:for-each select="pi:Employee"> 

       <xsl:value-of select="pi:Summary/pi:Employee_ID"/> 
       <xsl:value-of select="$sep"/> 

       <xsl:value-of select="pi:Personal/pi:Last_Name"/> 
       <xsl:value-of select="$sep"/> 

       <xsl:value-of select="pi:Personal/pi:First_Name"/> 
       <xsl:value-of select="$sep"/> 

       <xsl:value-of select="pi:Identifier[pi:Identifier_Type = 'SSN']/pi:Identifier_Value"/> 
       <xsl:value-of select="$sep"/> 

       <xsl:value-of select="pi:Status/pi:Hire_Date"/> 

       <xsl:text>&#xa;</xsl:text> 
      </xsl:for-each> <!-- end employee loop --> 

      <xsl:text>&#xa;</xsl:text> 

     </xsl:for-each> <!-- end paygroup loop --> 

    </xsl:template> <!-- end of main template --> 
</xsl:stylesheet> 
+0

Похоже, вы получаете последовательность обновлений и должны принимать решение на основании операций независимо от того, присутствует или нет SSN, и какой из них хранить. Что спецификация говорит о порядке работы? Для заданного 'Identifier_Type', являются ли операции, заказанные с последним первым или последним? Обратите внимание, что если «самый последний» (в зависимости от того, какой он есть) является 'REMOVE', то эта запись не имеет SSN. Проблема недоказана, и в ее нынешнем виде вопрос не может быть дан. –

+0

@JimGarrison ... Это должен быть самый последний SSN, если есть несколько значений. Я новичок в XSLT, поэтому прошу прощения за неопределенное объяснение.Большое вам спасибо за ваш немедленный ответ, оцените его :) – feeks

+0

Проблема в том, что для определения порядка обновлений информации недостаточно, что имеет большое значение. Вы должны спросить поставщика XML, какой он есть. –

ответ

0

Он должен быть самым последним ПЛА, если есть несколько значений

Я согласен с предыдущими комментариями и ответами, что это немного схематичны требование. В источнике ничего нет, что предлагает «самое последнее». Есть несколько возможных выводов, которые вы должны проверить, с кем имеет спецификацию вашей входной XML:

  • самый последний также является последним, использование:

    <xsl:value-of select="pi:Identifier[pi:Identifier_Type = 'SSN'] 
        [last()]/pi:Identifier_Value"/> 
    
  • самый последний всегда первое, использование:

    <xsl:value-of select="pi:Identifier[pi:Identifier_Type = 'SSN'] 
        [1]/pi:Identifier_Value"/> 
    
  • самый последний является последним, но может не имеют CERTA в «операции» (как это было предложено Майклу):

    <xsl:value-of select="pi:Identifier[pi:Identifier_Type = 'SSN' 
        and not(pi:Operation='REMOVE')][last()]/pi:Identifier_Value"/> 
    
  • что-нибудь еще (заполнить пробелы)

+0

Абель и Майкл ... Большое вам спасибо за помощь. Я очень ценю ваши быстрые ответы. Спасибо :) – feeks

1

Вы не предоставили каких-либо указаний о том, какой из номеров SSN выбрать, и только с одним примером, который я могу сделать, я в основном догадываюсь здесь. Попробуйте заменить:

<xsl:value-of select="pi:Identifier[pi:Identifier_Type = 'SSN']/pi:Identifier_Value"/> 

с:

<xsl:value-of select="pi:Identifier[pi:Identifier_Type = 'SSN' and not(pi:Operation='REMOVE')]/pi:Identifier_Value"/> 

Это основано на предположении, что всякий раз, когда ПЛА будет убрана, там будет еще один (и только один) ДОБАВЛЕНО - и это один вы хотите иметь в своем выходе. Конечно, вам нужно проконсультироваться с вашей исходной схемой XML, чтобы проверить такое предположение.

+0

@JimGarrison Ваша * догадка * так же хороша, как моя. –