2016-09-18 4 views
1

У меня есть элемент XML схема определяются следующим образом:Xerces «фиксированный» атрибут элемента в XML-схеме

<xsd:element name="Test"> 
    <xsd:complexType> 
     <xsd:sequence> 
     <xsd:element name="ElementFixed" fixed="SomeFixedValue"/> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 

Как я понимаю, «ElementFixed» является подстановочным элементом. (Поскольку тип не определен, он имеет тип «anyType».)

Теперь, возможно, это связано или не связано (к элементу, являющемуся подстановочным знаком), но я пытаюсь извлечь «фиксированное» значение «SomeFixedValue» «используя библиотеки Xerces, и изо всех сил пытаюсь понять, как это сделать. Я подозреваю, что это может иметь какое-то отношение к XSAttributeUse или XSAttributeDeclaration, но я не смог определить, какие методы мне нужно для вызова того, какие объекты должны содержать эту информацию. Может ли кто-нибудь указать мне в правильном направлении? Благодаря!

ответ

0

Я смог это обработать. Оказывается, мне нужно было вызвать getConstraintType() в XSElementDeclaration, который возвращает либо XSConstants.VC_NONE, VC_DEFAULT, либо VC_FIXED. Затем, если тип ограничения имеет значение , а не none, к этому значению обращается вызов getValueConstraintValue(). GetActualValue(). Например:

short vcKind = xsElementDecl.getConstraintType(); 
System.out.println("Constraint Type: " + vcKind); 
if (vcKind != XSConstants.VC_NONE) { 
    System.out.println("Value: " + xsElementDecl.getValueConstraintValue().getActualValue()); 
} 
Смежные вопросы