2012-02-09 4 views
1

Из родительского узла мне нужно проверить значение одного из дочерних элементов для генерации адекватного вывода.получить значение дочернего элемента от родителя

мой файл XML выглядит:

<Tables> 
    <Table> 
     <Multi_entity>SPECIFIC</Multi_entity> 
     <Table_name>CATEG</Table_name> 
     <Is_temporary>FALSE</Is_temporary> 
     <Tablespace>APSYS_LOCATION_1</Tablespace> 
     <Column> 
     <Column_name>CATEGI</Column_name> 
     <Position>1</Position> 
     <Type>Small</Type> 
     <Size>22</Size> 
     <Null>No</Null> 
     <Default>Yes</Default> 
     <Attribute>Precision=5</Attribute> 
     <Attribute>Scale=0</Attribute> 
     </Column> 
     <Column> 
     <Column_name>CATEGC</Column_name> 
     <Position>2</Position> 
     <Type>LongVarchar</Type> 
     <Size>1</Size> 
     <Null>No</Null> 
     <Default>Yes</Default> 
     <Attribute>Precision=0</Attribute> 
     <Attribute>Scale=0</Attribute> 
     </Column> 
     <Column> 
     <Column_name>CATEG_NAME</Column_name> 
     <Position>3</Position> 
     <Type>Varchar</Type> 
     <Size>23</Size> 
     <Null>No</Null> 
     <Default>Yes</Default> 
     <Attribute>Precision=0</Attribute> 
     <Attribute>Scale=0</Attribute> 
     </Column> 
     <Column> 
     <Column_name>CATEG_TYPE</Column_name> 
     <Position>4</Position> 
     <Type>Small</Type> 
     <Size>22</Size> 
     <Null>No</Null> 
     <Default>Yes</Default> 
     <Attribute>Precision=5</Attribute> 
     <Attribute>Scale=0</Attribute> 
     </Column> 
    </Table> 

из узла «Таблица», мне нужно знать, если один из «Колонка» имеет «Тип» значение «LONGVARCHAR».

ответ

3

ли

<xsl:template match="Table[Column/Type = 'LongVarchar']"> 
    <!-- now transform or output as neeed --> 
</xsl:template> 

помощь? Это соответствует любому Table, имеющему Column с Type, являющимся значением LongVarchar.

+0

+1 для хорошего ответа. –

+0

спасибо, но можем ли мы иметь еще одну команду, которая может использоваться с SamiBOB

+0

@SamiBOB: Решение, предоставленное Мартином, превосходит использование 'xsl: choose'. Это намного лучше - поддерживаемое, расширяемое и в духе XSLT использовать шаблоны и сопоставление шаблонов против явной условной логики в едином монолитном шаблоне и без повторного использования. –

1

мне удалось прийти по моей проблеме таким образом, что это так легко, что я действительно удивлен, о его простоте:

<xsl:when test="Column/Type='LongVarchar'"> 

вот это, и это работает прекрасно. Спасибо всем за помощь.

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