I digged around about the problem and found the file that causes the
problem.
The error comes from "m_wxml_core.f90" ...
When i opened the file and search for error string then i found the
if (.not.checkChars(value, xf%xds%xml_version)) call
wxml_error("xml_AddAttribute: Invalid character in value")
problem but i couldnot understand at all.
But i think its about some subroutine so i am copying necessary parts of
file again:
subroutine xml_AddAttribute_Ch(xf, name, value, escape, type,
ws_significant)
type(xmlf_t), intent(inout) :: xf
character(len=*), intent(in) :: name
character(len=*), intent(in) :: value
logical, intent(in), optional :: escape
character(len=*), intent(in), optional :: type
logical, intent(in), optional :: ws_significant
#ifndef DUMMYLIB
logical :: esc
character, pointer :: type_(:)
if (present(type)) then
if
(type/='CDATA'.and.type/='ID'.and.type/='IDREF'.and.type/='IDREFS'.and.type/='NMTOKEN'.and.type/='NMTOKENS'
&
.and.type/='ENTITY'.and.type/='ENTITIES'.and.type/='NOTATION') then
call wxml_fatal("Invalid type in xml_AddAttribute: "//type)
endif
type_ => vs_str_alloc(type)
else
! We assume CDATA, but need to worry about whether the caller cares about
whitespace ...
if (present(ws_significant)) then
if (ws_significant) then
type_ => vs_str_alloc('CDATA')
else
type_ => vs_str_alloc('CDANO') ! CDAta, whitespace Not significant
endif
else
type_ => vs_str_alloc('CDAMB') ! CDAta, whitespace MayBe significant
endif
endif
call check_xf(xf)
if (.not.checkChars(value, xf%xds%xml_version)) call
wxml_error("xml_AddAttribute: Invalid character in value")
if (xf%namespace) then
if (.not.checkQName(name, xf%xds%xml_version)) &
call wxml_error("Invalid Attribute Name "//name)
else
if (.not.checkName(name, xf%xds%xml_version)) &
call wxml_error("Invalid Attribute Name "//name)
endif
if (present(escape)) then
esc = escape
else
esc = .true.
endif
if (name=="xml:space") then
! The value can only be "default" or "preserve", by 2.10
if (.not.esc) then
if (value/="default".and.value/="preserve") &
call wxml_fatal("Invalid value for xml:space attrbute")
endif
endif
! FIXME when escape is false we should still do full verification
! where possible.
! Currently - minimal check: only extra allowed is character entity
references.
! We check they exist, and are not unparsed.
! Ideally we would fully expand all entity references (at least for
! a standalone document where we can) and then
! match the resultant production against [XML]-3.3.1. This is
! initially too much work though, so we just check simple
! syntactic constraint.
if (.not.esc) then
if (.not.checkAttValue(value, xf%xds%xml_version)) &
call wxml_error(xf, "Invalid attribute value: "//value)
if (index(value, '&') > 0) then
! There are entity references
! They should exist (unless we are not standalone) and they must not be
unparsed.
if (.not.checkExistingRefsInAttValue()) then
if (xf%xds%standalone) then
call wxml_error(xf, "outputting unknown entity. Cannot guarantee validity.")
else
call wxml_warning(xf, "Warning: outputting unknown entity. Cannot guarantee
validity.")
endif
endif
if (.not.checkParsedRefsInAttValue()) &
call wxml_error(xf, "Warning: outputting unknown entity. Cannot guarantee
validity.")
endif
endif
if (xf%state_2 /= WXML_STATE_2_INSIDE_ELEMENT) &
call wxml_error(xf, "attributes outside element content: "//name)
if (hasKey(xf%dict,name)) then
call wxml_error(xf, "duplicate att name: "//name)
elseif (xf%namespace) then
if (hasKey(xf%dict, &
getnamespaceURI(xf%nsDict,prefixOfQname(name)), localpartofQname(name)))
then
call wxml_error(xf, "duplicate att after namespace processing: "//name)
endif
endif
if (xf%namespace) then
if (len(prefixOfQName(name))>0) then
if (prefixOfQName(name)/="xml".and.prefixOfQName(name)/="xmlns") then
if (.not.isPrefixInForce(xf%nsDict, prefixOfQName(name))) &
call wxml_error(xf, "namespace prefix not registered:
"//prefixOfQName(name))
endif
if (esc) then
call add_item_to_dict(xf%dict, localpartofQname(name), escape_string(value,
xf%xds%xml_version), prefixOfQName(name), &
getnamespaceURI(xf%nsDict,prefixOfQname(name)), type=str_vs(type_))
else
call add_item_to_dict(xf%dict, localpartofQname(name), value,
prefixOfQName(name), &
getnamespaceURI(xf%nsDict,prefixOfQName(name)), type=str_vs(type_))
endif
else
if (esc) then
call add_item_to_dict(xf%dict, name, escape_string(value,
xf%xds%xml_version), type=str_vs(type_))
else
call add_item_to_dict(xf%dict, name, value, type=str_vs(type_))
endif
endif
else
if (esc) then
call add_item_to_dict(xf%dict, name, escape_string(value,
xf%xds%xml_version), type=str_vs(type_))
else
call add_item_to_dict(xf%dict, name, value, type=str_vs(type_))
endif
endif
!FIXME need to deallocate this when we move to better error handling
deallocate(type_)
contains
function checkExistingRefsInAttValue() result(p)
logical :: p
integer :: i1, i2
! Here we assume we have syntactic well-formedness as
! checked by checkAttValue.
! We also assume we do not have simply one entity as
! the contents - that is checked by checkAttValueEntity
p = .false.
i1 = index(value, '&')
i2 = 0
do while (i1 > 0)
i1 = i2 + i1
i2 = index(value(i1+1:),';')
if (i2 == 0) return
i2 = i1 + i2
if (.not.existing_entity(xf%xds%entityList, value(i1+1:i2-1)) .and. &
.not.checkCharacterEntityReference(value(i1+1:i2-1), xf%xds%xml_version)) &
return
i1 = index(value(i2+1:), '&')
enddo
p = .true.
end function checkExistingRefsInAttValue
function checkParsedRefsInAttValue() result(p)
logical :: p
integer :: i1, i2
! Here we assume we have syntactic well-formedness as
! checked by checkAttValue.
p = .false.
i1 = index(value, '&')
i2 = 0
do while (i1 > 0)
i1 = i1 + i2
i2 = index(value(i1+1:),';')
if (i2 == 0) return
i2 = i1 + i2
if (is_unparsed_entity(xf%xds%entityList, value(i1+1:i2-1))) &
return
i1 = index(value(i2+1:), '&')
enddo
p = .true.
end function checkParsedRefsInAttValue
#endif
end subroutine xml_AddAttribute_Ch
Any idea people?
2009/11/28 Ozan ARI <[email protected]>
> Thanx for your reply,
>
> I changed the siesta_forces.F file and it fixed compiling problem but now i
> get some wierd error while i try to run any test or my calculations.
>
>
> mpirun -n 8 siesta <input.fdf > out.fdf
> ERROR(FoX)
> xml_AddAttribute: Invalid character in value
>
>
>
> when i check the out file it seems the PAO.basis block is well done but the
> next lines are
>
>
> prinput:
> ----------------------------------------------------------------------
>
> coor: Atomic-coordinates input format = Cartesian coordinates
> coor: (in Angstroms)
>
> siesta: Atomic coordinates (Bohr) and species
> siesta: 1.30391 2.25844 0.00000 1 1
> siesta: 2.60782 0.00000 0.00000 1 2
> siesta: 1.30391 -2.25844 0.00000 1 3
> siesta: -1.30391 -2.25844 0.00000 1 4
> siesta: -2.60782 0.00000 0.00000 1 5
> siesta: -1.30391 2.25844 0.00000 1 6
> siesta: 2.30547 3.99319 0.00000 2 7
> siesta: 4.61093 0.00000 0.00000 2 8
> siesta: 2.30547 -3.99319 0.00000 2 9
> siesta: -2.30547 -3.99319 0.00000 2 10
> siesta: -4.61093 0.00000 0.00000 2 11
> siesta: -2.30547 3.99319 0.00000 2 12
>
> siesta: System type = molecule
> rank 0 in job 19 tuz_42241 caused collective abort of all ranks
> exit status of rank 0: killed by signal 9
>
>
> Thanks for help again. I could not understand the error here, may be system
> type?
>