XML - статьи

         

Замена атрибутов элементами


Теперь, когда мы получили новое объявление элементов, которое должно заменить используемые атрибуты, необходимо поменять их местами в компоненте complexType. Поскольку мы воспользовались в цикле конкретным отношением включения complexType.getAttributeContents(), можно просто добавить новое elementDeclaration, а затем вызвать attrContentsIter.remove(), чтобы удалить фактически используемый атрибут из типа.



Листинг 5. Использование конкретных списков для удаления атрибутов

// Use this concrete relationship, since we're going to // actually remove the attributes from this type // (Использует это конкретное отношение, т.к. из этого // типа будут удаляться атрибуты) for (ListIterator iter = complexType.getAttributeContents().listIterator(); iter.hasNext(); /* no-op */ ) {

if (changeAttributeIntoElement(complexType, (XSDAttributeGroupContent)iter.next(), changedAttrs)) { // Note that list manipulation calls like remove() // will only work properly on concrete lists; // attempting to manipulate 'abstract' lists will // either throw an exception or will silently fail // (Внимание: вызовы манипуляции списком, как remove() // будет работать корректно только на конкретных // списках; попытка манипулировать "абстрактными" // списками, либо сгенерирует исключение, либо приведет к сбою) iter.remove(); } else { // Report the error and continue... // (Сообщает об ошибке и продолжает...) } }



Содержание раздела