Como alterar XML através do XSD Schema?

3 respostas
E

Olá pessoal!!!
Estou com uma dívida com XSD Schema. Uso um metodo para validar meu XML, quando esta invalido segundo o que defino no meu XSD ele gerar o erro certinho.
Minha duvida é que quando defino um element no meu XSD como:

<xsd:element name="sigla" type="xsd:string" default="SC"/>

se eu passar minha tag <sigla></sigla> assim vazia, ele atribui o valor default para “SC”, correto?

Mas essa atribuição é inserida no meu XML original?
Por que o metodo que uso ele faz a validação do XML e retorna um erro ou uma menssagem de exito conforme o resultado.

Minha duvida é essa, se através do XSD Schema eu posso inserir um valor no XML?
Por favor se não fui claro me avisem tentei ser o mais objetivo possivel sem escrever uma montoeira de códigos.

Muito obrigado pela atenção.

3 Respostas

E

Quando você usa (ou ) é usado o valor “” (vazio), não o valor default.

O valor “default” é assumido quando você omite o elemento . Isso indica, obviamente, que a tag deve ser opcional.

E

“No value” != “empty value”

E
Valeu pela resposta entanglement !!! Isso que você citou eu entendi. Mas minha duvida permanece. Se eu omitir a tag
<sigla></sigla>
e tentar validar com o XSD, em que momento e como o XSD inseri o valor default="SC"? O metodo que estou usando para validar é esse:
public static String ValidaDoc(String stringXml, String xsdFileName)  
    {  
        //Define o tipo de  - we use W3C  
        String schemaLang = "http://www.w3.org/2001/XMLSchema";  
        //valida driver  
        SchemaFactory factory = SchemaFactory.newInstance(schemaLang);  
        //  
        try   
        {  
            URL xsdPath = Valida.class.getResource("/schemas/" + xsdFileName);  
  
            Schema schema = factory.newSchema(new StreamSource(xsdPath.toURI().toString()));  
            Validator validator = schema.newValidator();  
            //Perform the validation:  
            validator.validate(new StreamSource(new StringReader(stringXml)));  
            DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance();  
            DocumentBuilder builder = fact.newDocumentBuilder();  
            builder.parse(new InputSource(new StringReader(stringXml)));  
        }  
        catch (Exception e)  
        {  
            if(e instanceof SAXParseException)  
                return "XML Parse Error on Col: "+ ((SAXParseException) e).getColumnNumber() + " | Lin: " + ((SAXParseException) e).getLineNumber() + " - " + ((SAXParseException) e).getLocalizedMessage();  
            else  
                return "Unknow error attemping to validate XML.";  
        }  
        return "";  
    }
Criado 21 de março de 2013
Ultima resposta 21 de mar. de 2013
Respostas 3
Participantes 2