楼主你说得 xsd 是指 XML 结构定义 ( XML Schemas Definition ) 么?
我没有 xsd 的经验,而且据我所知 ruby 在处理 xml 方面不强,或者说 rubyist 都不怎么喜欢 xml。
要处理 xml 文档有多大?如果很小就用 nokogiri 来 parse 文件,用 builder 来生成即可。
以前有个项目是处理德文词典数据,一本词典按照字母分割成 n 个 5~600MB 得 xml 文件,结构相当复杂,用 dom 方式解析效率极低,无法让人接受,而用 sax 方式解析效率尚可,但是因为复杂的 xml 文档让 sax 的 parser 变得复杂难以维护,最后采取的办法是用 sax 方式将 xml 文件中的每个单词对应的 xml 片段截取出来,在单独用 dom 的方式对这个片段进行解析,dom 的 xml 的 parser 逻辑比较简洁易维护。