Еще один вопрос новичка в XSLT-преобразовании.(Я задавал подобный вопрос и раньше, но в этом случае XML имеет разные форматы).
У меня есть XML-документ, который мне нужен для проверки, используя xslt.Это будет сделано с помощью инструмента xsltproc.
<?xml version="1.0" ?>
<Company id="1" ...>
<Name>blah</Name>
<Location>
<Address>zzz</Address>
<City>aaa</City>
.....
</Location>
....
<Manager id="m1" mincount="4" grade="10"...>
<Employee id="e1"/>
<Employee id="e2"/>
.....
</Manager>
.....
</Company>
<Employee_List>
<Employee id="e1" grade="9" Location="New York" p1="value" p2="value"....... />
<Employee id="e2" grade="8" Location="New York" p1="value" p2="value"....... />
......
</Employee_List>
Мне нужно выполнить следующие проверки только для тегов <Manager>
и <Employee_List>
, т. Е. Меня не волнуют теги местоположения компании и т. Д. Обратите внимание, что в документе xml есть <company>
<Employee_List>
теги.
- Количество сотрудников под менеджером должно быть> = mincount.
- Оценки сотрудников под руководством менеджера должны быть <оценки менеджера.</li>
- Все сотрудники под руководством менеджера должны находиться в одном месте.(Мне нужны дополнительные проверки, такие как свойства p1 и p2 сотрудников также должны совпадать).
TIA и ценю любую помощь !!
Новые правила для проверки (добавлено 5/5/12).1. Атрибут p1 должен быть либо ALPHA, либо BETA (строка), он не может быть ничем иным.Этот xsl работает для одного сотрудника, а не для нескольких сотрудников.
<xsl:apply-templates mode="rule5" select=
"*/*/Manager[not(key('kEmpById', Employee/@id)/@p1 = 'ALPHA' or
key('kEmpById', Employee/@id)/@p1 = 'BETA')
]
"/>
Идентификатор сотрудника должен быть уникальным.Я пробовал этот xsl, но он не работает :(
<xsl:apply-templates mode="rule6" select=
" / / Manager [key ('kEmpById', Employee [2] / @ id) / @ id= ключ ('kEmpById', сотрудник / @ id) / @ id] "/>
TIA!