@@ -1132,16 +1132,18 @@ def []=( name, value )
1132
1132
old_attr [ value . prefix ] = value
1133
1133
elsif old_attr . prefix != value . prefix
1134
1134
# Check for conflicting namespaces
1135
- raise ParseException . new (
1136
- "Namespace conflict in adding attribute \" #{ value . name } \" : " +
1137
- "Prefix \" #{ old_attr . prefix } \" = " +
1138
- "\" #{ @element . namespace ( old_attr . prefix ) } \" and prefix " +
1139
- "\" #{ value . prefix } \" = \" #{ @element . namespace ( value . prefix ) } \" " ) if
1140
- value . prefix != "xmlns" and old_attr . prefix != "xmlns" and
1141
- @element . namespace ( old_attr . prefix ) ==
1142
- @element . namespace ( value . prefix )
1143
- store value . name , { old_attr . prefix => old_attr ,
1144
- value . prefix => value }
1135
+ if value . prefix != "xmlns" and old_attr . prefix != "xmlns"
1136
+ old_namespace = @element . namespace ( old_attr . prefix )
1137
+ new_namespace = @element . namespace ( value . prefix )
1138
+ if old_namespace == new_namespace
1139
+ raise ParseException . new (
1140
+ "Namespace conflict in adding attribute \" #{ value . name } \" : " +
1141
+ "Prefix \" #{ old_attr . prefix } \" = \" #{ old_namespace } \" and " +
1142
+ "prefix \" #{ value . prefix } \" = \" #{ new_namespace } \" " )
1143
+ end
1144
+ end
1145
+ store value . name , { old_attr . prefix => old_attr ,
1146
+ value . prefix => value }
1145
1147
else
1146
1148
store value . name , value
1147
1149
end
0 commit comments