2013-09-17 3 views
0

Я борюсь с некоторыми базовыми XSLT. Я хотел бы удалить элемент из некоторого XML в зависимости от того, не имеет ли он определенного атрибута (в этом случае PriorValue).Как удалить XML-элементы на основе атрибута в XSLT

XML Похож на это XML не ограничивается только нижеследующими разделами, он содержит много других разделов, и к ним применяется одна и та же логика.

<Emp> 
     <Personal> 
      <First_Name>abc</First_Name> 
      <Last_Name>xyz</Last_Name> 
      <Gender>1</Gender> 
      <Birth_Date PriorValue="1980-08-05">1980-09-05</Birth_Date> 
      <Country_of_Birth PriorValue="600">724</Country_of_Birth> 
      <Marital_Status PriorValue="0">1</Marital_Status> 
     </Personal> 
     <Info> 
      <Name>abc</Name> 
      <ID>Part time</ID> 
      <NoOfProbationDays>0</NoOfProbationDays> 
      <EMPtype>0</EMPtype> 
      <CountryOfBirth PriorValue="IND">ESP</CountryOfBirth> 
     </Info> 
    </Emp> 

Желаемый результат XML выглядит следующим образом.

<Emp> 
     <Personal> 
      <Birth_Date PriorValue="1980-08-05">1980-09-05</Birth_Date> 
      <Country_of_Birth PriorValue="600">724</Country_of_Birth> 
      <Marital_Status PriorValue="0">1</Marital_Status> 
     </Personal> 
     <Info> 
      <CountryOfBirth PriorValue="IND">ESP</CountryOfBirth> 
     </Info> 
    </Emp> 

Благодарим за помощь.

ответ

2

Использование

<xsl:template match="@* | node()"> 
    <xsl:copy> 
    <xsl:apply-templates select="@* | node()"/> 
    </xsl:copy> 
<xsl:template> 

<xsl:template match="*[not(*) and not(@PriorValue)]"/> 
+0

спасибо большое за ответ, Кроме того, как я исключить несколько разделов из него. Например: предположим, что есть сводный раздел, и я не хочу применять к нему проверку приоритета и всегда хочу его в выходном XML? спасибо за вашу помощь – user2788521

+0

Изменить '' to ''. Это должно быть сделано, если ваш вход может содержать элементы 'summary' без атрибута' PriorValue' и вы хотите скопировать его, тем не менее, в результат. Если 'summary' может быть родителем других элементов, для которых вы не хотите их удалять, используйте, например, ''. –

+0

большое спасибо – user2788521

Смежные вопросы