Главная › Форум › XML Конвертер › XQuery. Запроc данных об участках в формат csv
В этой теме 8 ответов, 2 участника, последнее обновление Николай 8 года/лет, 2 мес. назад.
-
АвторСообщения
-
12.02.2016 в 10:41 #2174
Здравствуйте, Андрей! Переработал стандартный запрос New_ZU_CSV.xq, добавив к нему дополнительные данные. Запрос работает без ошибок, но при конвертации более одного файла xml, заголовки в результирующем файле csv (первая строчка) смещаются в две строки. При конвертации одного xml файла все в порядке. В чем может быть причина?
12.02.2016 в 10:43 #2175xquery version «1.0»;
(: НОВЫЙ Запрос преобразования кадастровых выписок, паспортов, КПТ в формат CSV (разделитель точка с запятой) и извлечения подробных характеристик участков
версия от 15.01.16
Автор: Андрей Ясевич, email: info@xmlcon.ru 🙂
declare variable $inputDocument external;
declare variable $my_doc := doc($inputDocument);
declare variable $reg_doc := doc(«dRegionsRF.xsd»);
declare variable $cat_doc := doc(«dCategories.xsd»);
declare variable $state_doc := doc(«dStates.xsd»);
declare variable $parcel_doc := doc(«dParcels.xsd»);
declare variable $dlm := «;»;
declare variable $nln := codepoints-to-string((10));
declare function local:str-prep($source) as xs:string
{
replace( replace( $source, «(\r\n|\r|\n| | | )», » » ), $dlm, «,» )
};
declare function local:parcelType($i as element()) as xs:string
{
if (exists($i/*:Name)) then $parcel_doc//xs:enumeration[@value=$i/*:Name]/xs:annotation/xs:documentation/text()
else if (exists($i/*:CompositionEZ)) then «Единое землепользование»
else if (exists($i/*:Contours)) then «Многоконтурный участок»
else if (exists($i/*:ParentCadastralNumbers)) then «Обособленный участок»
else if (exists($i/self::*:EntryParcel)) then «Обособленный участок»
else «Землепользование»
};
declare function local:addressStr($addressElm) as xs:string
{
if ( empty ($addressElm) ) then
«»
else if ( exists ($addressElm/*:Note/text()) ) then
local:str-prep ( $addressElm/*:Note/text() )
else (
let $Region := $reg_doc//xs:enumeration[@value=$addressElm/*:Region/text()]/xs:annotation/xs:documentation/text()
let $District := if ( exists($addressElm/*:District ) ) then concat($addressElm/*:District/@Type, » «, $addressElm/*:District/@Name) else ()
let $City := if ( exists($addressElm/*:City ) ) then concat($addressElm/*:City/@Type, » «, $addressElm/*:City/@Name) else ()
let $SovietVillage := if ( exists($addressElm/*:SovietVillage ) ) then concat($addressElm/*:SovietVillage/@Type, » «, $addressElm/*:SovietVillage/@Name) else ()
let $Locality := if ( exists($addressElm/*:Locality ) ) then concat($addressElm/*:Locality/@Type, » «, $addressElm/*:Locality/@Name) else ()
let $Street := if ( exists($addressElm/*:Street ) ) then concat($addressElm/*:Street/@Type, » «, $addressElm/*:Street/@Name) else ()
let $Level1 := if ( exists($addressElm/*:Level1 ) ) then concat($addressElm/*:Level1/@Type, » «, $addressElm/*:Level1/@Value) else ()
let $Level2 := if ( exists($addressElm/*:Level2 ) ) then concat($addressElm/*:Level2/@Type, » «, $addressElm/*:Level2/@Value) else ()
let $Level3 := if ( exists($addressElm/*:Level3 ) ) then concat($addressElm/*:Level3/@Type, » «, $addressElm/*:Level3/@Value) else ()
let $Apartment := if ( exists($addressElm/*:Apartment ) ) then concat($addressElm/*:Apartment/@Type, » «, $addressElm/*:Apartment/@Value) else ()
let $Other := if ( exists($addressElm/*:Other/text() ) ) then $addressElm/*:Other/text() else ()
let $adr_seq := ( $Region, $District, $City, $SovietVillage, $Locality, $Street, $Level1, $Level2, $Level3, $Apartment, $Other )
return local:str-prep ( string-join($adr_seq, «, «) )
)
};
declare function local:AAdmType($addressElm) as xs:string
{
if (exists($addressElm/*:City/@Type)) then $addressElm/*:City/@Type
else if (exists($addressElm/*:SovietVillage/@Type)) then $addressElm/*:SovietVillage/@Type
else if (exists($addressElm/*:Locality/@Type)) then $addressElm/*:Locality/@Type
else if (exists($addressElm)) then «»
else ()
};
declare function local:AAdmName($addressElm) as xs:string
{
if (exists($addressElm/*:City/@Name)) then $addressElm/*:City/@Name
else if (exists($addressElm/*:SovietVillage/@Name)) then $addressElm/*:SovietVillage/@Name
else if (exists($addressElm/*:Locality/@Name)) then $addressElm/*:Locality/@Name
else if (exists($addressElm)) then «»
else ()
};
declare function local:ANum($addressElm) as xs:string
{
let $Level1 := if ( exists($addressElm/*:Level1 ) ) then concat($addressElm/*:Level1/@Value, » [«, $addressElm/*:Level1/@Type, «]») else ()
let $Level2 := if ( exists($addressElm/*:Level2 ) ) then concat($addressElm/*:Level2/@Value, » [«, $addressElm/*:Level2/@Type, «]») else ()
let $Level3 := if ( exists($addressElm/*:Level3 ) ) then concat($addressElm/*:Level3/@Value, » [«, $addressElm/*:Level3/@Type, «]») else ()
let $Apartment := if ( exists($addressElm/*:Apartment ) ) then concat($addressElm/*:Apartment/@Type, » «, $addressElm/*:Apartment/@Value) else ()
let $Other := if ( exists($addressElm/*:Other/text() ) ) then $addressElm/*:Other/text() else ()
let $adr_seq := ( $Level1, $Level2, $Level3, $Apartment, $Other )
return concat ( «. «, local:str-prep ( string-join($adr_seq, «, «) ) )
};
declare function local:UtilizationKind($i) as xs:string
{
let $x :=
for $n in $i/*:Utilization
return
if (data($n/@Utilization) = «141000000000») then «Для размещения объектов сельскохозяйственного назначения и сельскохозяйственных угодий»
else if (data($n/@Utilization) = «141001000000») then «Для сельскохозяйственного производства»
else if (data($n/@Utilization) = «141001010000») then «Для использования в качестве сельскохозяйственных угодий»
else if (data($n/@Utilization) = «141001020000») then «Для размещения зданий, строений, сооружений, используемых для производства, хранения и первичной переработки сельскохозяйственной продукции»
else if (data($n/@Utilization) = «141001030000») then «Для размещения внутрихозяйственных дорог и коммуникаций»
else if (data($n/@Utilization) = «141001040000») then «Для размещения водных объектов»
else if (data($n/@Utilization) = «141002000000») then «Для ведения крестьянского (фермерского) хозяйства»
else if (data($n/@Utilization) = «141003000000») then «Для ведения личного подсобного хозяйства»
else if (data($n/@Utilization) = «141004000000») then «Для ведения гражданами садоводства и огородничества»
else if (data($n/@Utilization) = «141005000000») then «Для ведения гражданами животноводства»
else if (data($n/@Utilization) = «141006000000») then «Для дачного строительства»
else if (data($n/@Utilization) = «141007000000») then «Для размещения древесно-кустарниковой растительности, предназначенной для защиты земель от воздействия негативных (вредных) природных, антропогенных и техногенных явлений»
else if (data($n/@Utilization) = «141008000000») then «Для научно-исследовательских целей»
else if (data($n/@Utilization) = «141009000000») then «Для учебных целей»
else if (data($n/@Utilization) = «141010000000») then «Для сенокошения и выпаса скота гражданами»
else if (data($n/@Utilization) = «141011000000») then «Фонд перераспределения»
else if (data($n/@Utilization) = «141012000000») then «Для размещения объектов охотничьего хозяйства»
else if (data($n/@Utilization) = «141013000000») then «Для размещения объектов рыбного хозяйства»
else if (data($n/@Utilization) = «141014000000») then «Для иных видов сельскохозяйственного использования»
else if (data($n/@Utilization) = «142000000000») then «Для размещения объектов, характерных для населенных пунктов»
else if (data($n/@Utilization) = «142001000000») then «Для объектов жилой застройки»
else if (data($n/@Utilization) = «142001010000») then «Для индивидуальной жилой застройки»
else if (data($n/@Utilization) = «142001020000») then «Для многоквартирной застройки»
else if (data($n/@Utilization) = «142001020100») then «Для малоэтажной застройки»
else if (data($n/@Utilization) = «142001020200») then «Для среднеэтажной застройки»
else if (data($n/@Utilization) = «142001020300») then «Для многоэтажной застройки»
else if (data($n/@Utilization) = «142001020400») then «Для иных видов жилой застройки»
else if (data($n/@Utilization) = «142001030000») then «Для размещения объектов дошкольного, начального, общего и среднего (полного) общего образования»
else if (data($n/@Utilization) = «142001040000») then «Для размещения иных объектов, допустимых в жилых зонах и не перечисленных в классификаторе»
else if (data($n/@Utilization) = «142002000000») then «Для объектов общественно-делового значения»
else if (data($n/@Utilization) = «142002010000») then «Для размещения объектов социального и коммунально-бытового назначения»
else if (data($n/@Utilization) = «142002020000») then «Для размещения объектов здравоохранения»
else if (data($n/@Utilization) = «142002030000») then «Для размещения объектов культуры»
else if (data($n/@Utilization) = «142002040000») then «Для размещения объектов торговли»
else if (data($n/@Utilization) = «142002040100») then «Для размещения объектов розничной торговли»
else if (data($n/@Utilization) = «142002040200») then «Для размещения объектов оптовой торговли»
else if (data($n/@Utilization) = «142002050000») then «Для размещения объектов общественного питания»
else if (data($n/@Utilization) = «142002060000») then «Для размещения объектов предпринимательской деятельности»
else if (data($n/@Utilization) = «142002070000») then «Для размещения объектов среднего профессионального и высшего профессионального образования»
else if (data($n/@Utilization) = «142002080000») then «Для размещения административных зданий»
else if (data($n/@Utilization) = «142002090000») then «Для размещения научно-исследовательских учреждений»
else if (data($n/@Utilization) = «142002100000») then «Для размещения культовых зданий»
else if (data($n/@Utilization) = «142002110000») then «Для стоянок автомобильного транспорта»
else if (data($n/@Utilization) = «142002120000») then «Для размещения объектов делового назначения, в том числе офисных центров»
else if (data($n/@Utilization) = «142002130000») then «Для размещения объектов финансового назначения»
else if (data($n/@Utilization) = «142002140000») then «Для размещения гостиниц»
else if (data($n/@Utilization) = «142002150000») then «Для размещения подземных или многоэтажных гаражей»
else if (data($n/@Utilization) = «142002160000») then «Для размещения индивидуальных гаражей»
else if (data($n/@Utilization) = «142002170000») then «Для размещения иных объектов общественно-делового значения, обеспечивающих жизнь граждан»
else if (data($n/@Utilization) = «142003000000») then «Для общего пользования (уличная сеть)»
else if (data($n/@Utilization) = «142004000000») then «Для размещения объектов специального назначения»
else if (data($n/@Utilization) = «142004010000») then «Для размещения кладбищ»
else if (data($n/@Utilization) = «142004020000») then «Для размещения крематориев»
else if (data($n/@Utilization) = «142004030000») then «Для размещения скотомогильников»
else if (data($n/@Utilization) = «142004040000») then «Под объектами размещения отходов потребления»
else if (data($n/@Utilization) = «142004050000») then «Под иными объектами специального назначения»
else if (data($n/@Utilization) = «142005000000») then «Для размещения коммунальных, складских объектов»
else if (data($n/@Utilization) = «142006000000») then «Для размещения объектов жилищно-коммунального хозяйства»
else if (data($n/@Utilization) = «142007000000») then «Для иных видов использования, характерных для населенных пунктов»
else if (data($n/@Utilization) = «143000000000») then «Для размещения объектов промышленности, энергетики, транспорта, связи, радиовещания, телевидения, информатики, обеспечения космической деятельности, обороны, безопасности и иного специального назначения»
else if (data($n/@Utilization) = «143001000000») then «Для размещения промышленных объектов»
else if (data($n/@Utilization) = «143001010000») then «Для размещения производственных и административных зданий, строений, сооружений и обслуживающих их объектов»
else if (data($n/@Utilization) = «143001010100») then «Для размещения производственных зданий»
else if (data($n/@Utilization) = «143001010200») then «Для размещения коммуникаций»
else if (data($n/@Utilization) = «143001010300») then «Для размещения подъездных путей»
else if (data($n/@Utilization) = «143001010400») then «Для размещения складских помещений»
else if (data($n/@Utilization) = «143001010500») then «Для размещения административных зданий»
else if (data($n/@Utilization) = «143001010600») then «Для размещения культурно-бытовых зданий»
else if (data($n/@Utilization) = «143001010700») then «Для размещения иных сооружений промышленности»
else if (data($n/@Utilization) = «143001020000») then «Для добычи и разработки полезных ископаемых»
else if (data($n/@Utilization) = «143001030000») then «Для размещения иных объектов промышленности»
else if (data($n/@Utilization) = «143002000000») then «Для размещения объектов энергетики»
else if (data($n/@Utilization) = «143002010000») then «Для размещения электростанций и обслуживающих сооружений и объектов»
else if (data($n/@Utilization) = «143002010100») then «Для размещения гидроэлектростанций»
else if (data($n/@Utilization) = «143002010200») then «Для размещения атомных станций»
else if (data($n/@Utilization) = «143002010300») then «Для размещения ядерных установок»
else if (data($n/@Utilization) = «143002010400») then «Для размещения пунктов хранения ядерных материалов и радиоактивных веществ энергетики»
else if (data($n/@Utilization) = «143002010500») then «Для размещения хранилищ радиоактивных отходов»
else if (data($n/@Utilization) = «143002010600») then «Для размещения тепловых станций»
else if (data($n/@Utilization) = «143002010700») then «Для размещения иных типов электростанций»
else if (data($n/@Utilization) = «143002010800») then «Для размещения иных обслуживающих сооружений и объектов»
else if (data($n/@Utilization) = «143002020000») then «Для размещения объектов электросетевого хозяйства»
else if (data($n/@Utilization) = «143002020100») then «Для размещения воздушных линий электропередачи»
else if (data($n/@Utilization) = «143002020200») then «Для размещения наземных сооружений кабельных линий электропередачи»
else if (data($n/@Utilization) = «143002020300») then «Для размещения подстанций»
else if (data($n/@Utilization) = «143002020400») then «Для размещения распределительных пунктов»
else if (data($n/@Utilization) = «143002020500») then «Для размещения других сооружений и объектов электросетевого хозяйства»
else if (data($n/@Utilization) = «143002030000») then «Для размещения иных объектов энергетики»
else if (data($n/@Utilization) = «143003000000») then «Для размещения объектов транспорта»
else if (data($n/@Utilization) = «143003010000») then «Для размещения и эксплуатации объектов железнодорожного транспорта»
else if (data($n/@Utilization) = «143003010100») then «Для размещения железнодорожных путей и их конструктивных элементов»
else if (data($n/@Utilization) = «143003010200») then «Для размещения полос отвода железнодорожных путей»
else if (data($n/@Utilization) = «143003010300») then «Для размещения, эксплуатации, расширения и реконструкции строений, зданий, сооружений, в том числе железнодорожных вокзалов, железнодорожных станций, а также устройств и других объектов, необходимых для эксплуатации, содержания, строительства, реконструкц»
else if (data($n/@Utilization) = «143003010301») then «Для размещения железнодорожных вокзалов»
else if (data($n/@Utilization) = «143003010302») then «Для размещения железнодорожных станций»
else if (data($n/@Utilization) = «143003010303») then «Для размещения устройств и других объектов, необходимых для эксплуатации, содержания, строительства, реконструкции, ремонта, развития наземных и подземных зданий, строений, сооружений, устройств и других объектов железнодорожного транспорта»
else if (data($n/@Utilization) = «143003020000») then «Для размещения и эксплуатации объектов автомобильного транспорта и объектов дорожного хозяйства»
else if (data($n/@Utilization) = «143003020100») then «Для размещения автомобильных дорог и их конструктивных элементов»
else if (data($n/@Utilization) = «143003020200») then «Для размещения полос отвода»
else if (data($n/@Utilization) = «143003020300») then «Для размещения объектов дорожного сервиса в полосах отвода автомобильных дорог»
else if (data($n/@Utilization) = «143003020400») then «Для размещения дорожных сооружений»
else if (data($n/@Utilization) = «143003020500») then «Для размещения автовокзалов и автостанций»
else if (data($n/@Utilization) = «143003020600») then «Для размещения иных объектов автомобильного транспорта и дорожного хозяйства»
else if (data($n/@Utilization) = «143003030000») then «Для размещения и эксплуатации объектов морского, внутреннего водного транспорта»
else if (data($n/@Utilization) = «143003030100») then «Для размещения искусственно созданных внутренних водных путей»
else if (data($n/@Utilization) = «143003030200») then «Для размещения морских и речных портов, причалов, пристаней»
else if (data($n/@Utilization) = «143003030300») then «Для размещения иных объектов морского, внутреннего водного транспорта»
else if (data($n/@Utilization) = «143003030400») then «Для выделения береговой полосы»
else if (data($n/@Utilization) = «143003040000») then «Для размещения и эксплуатации объектов воздушного транспорта»
else if (data($n/@Utilization) = «143003040100») then «Для размещения аэропортов и аэродромов»
else if (data($n/@Utilization) = «143003040200») then «Для размещения аэровокзалов»
else if (data($n/@Utilization) = «143003040300») then «Для размещения взлетно-посадочных полос»
else if (data($n/@Utilization) = «143003040400») then «Для размещения иных наземных объектов воздушного транспорта»
else if (data($n/@Utilization) = «143003050000») then «Для размещения и эксплуатации объектов трубопроводного транспорта»
else if (data($n/@Utilization) = «143003050100») then «Для размещения нефтепроводов»
else if (data($n/@Utilization) = «143003050200») then «Для размещения газопроводов»
else if (data($n/@Utilization) = «143003050300») then «Для размещения иных трубопроводов»
else if (data($n/@Utilization) = «143003050400») then «Для размещения иных объектов трубопроводного транспорта»
else if (data($n/@Utilization) = «143003060000») then «Для размещения и эксплуатации иных объектов транспорта»
else if (data($n/@Utilization) = «143004000000») then «Для размещения объектов связи, радиовещания, телевидения, информатики»
else if (data($n/@Utilization) = «143004010000») then «Для размещения эксплуатационных предприятий связи и обслуживания линий связи»
else if (data($n/@Utilization) = «143004020000») then «Для размещения кабельных, радиорелейных и воздушных линий связи и линий радиофикации на трассах кабельных и воздушных линий связи и радиофикации и их охранные зоны»
else if (data($n/@Utilization) = «143004030000») then «Для размещения подземных кабельных и воздушных линий связи и радиофикации и их охранные зоны»
else if (data($n/@Utilization) = «143004040000») then «Для размещения наземных и подземных необслуживаемых усилительных пунктов на кабельных линиях связи и их охранные зоны»
else if (data($n/@Utilization) = «143004050000») then «Для размещения наземных сооружений и инфраструктур спутниковой связи»
else if (data($n/@Utilization) = «143004060000») then «Для размещения иных объектов связи, радиовещания, телевидения, информатики»
else if (data($n/@Utilization) = «143005000000») then «Для размещения объектов, предназначенных для обеспечения космической деятельности»
else if (data($n/@Utilization) = «143005010000») then «Для размещения космодромов, стартовых комплексов и пусковых установок»
else if (data($n/@Utilization) = «143005020000») then «Для размещения командно-измерительных комплексов, центров и пунктов управления полетами космических объектов, приема, хранения и переработки информации»
else if (data($n/@Utilization) = «143005030000») then «Для размещения баз хранения космической техники»
else if (data($n/@Utilization) = «143005040000») then «Для размещения полигонов приземления космических объектов и взлетно-посадочных полос»
else if (data($n/@Utilization) = «143005050000») then «Для размещения объектов экспериментальной базы для отработки космической техники»
else if (data($n/@Utilization) = «143005060000») then «Для размещения центров и оборудования для подготовки космонавтов»
else if (data($n/@Utilization) = «143005070000») then «Для размещения других наземных сооружений и техники, используемых при осуществлении космической деятельности»
else if (data($n/@Utilization) = «143006000000») then «Для размещения объектов, предназначенных для обеспечения обороны и безопасности»
else if (data($n/@Utilization) = «143006010000») then «Для обеспечения задач обороны»
else if (data($n/@Utilization) = «143006010100») then «Для размещения военных организаций, учреждений и других объектов»
else if (data($n/@Utilization) = «143006010200») then «Для дислокации войск и сил флота»
else if (data($n/@Utilization) = «143006010300») then «Для проведения учений и иных мероприятий»
else if (data($n/@Utilization) = «143006010400») then «Для испытательных полигонов»
else if (data($n/@Utilization) = «143006010500») then «Для мест уничтожения оружия и захоронения отходов»
else if (data($n/@Utilization) = «143006010600») then «Для создания запасов материальных ценностей в государственном и мобилизационном резервах (хранилища, склады и другие)»
else if (data($n/@Utilization) = «143006010700») then «Для размещения иных объектов обороны»
else if (data($n/@Utilization) = «143006020000») then «Для размещения объектов (территорий), обеспечивающих защиту и охрану Государственной границы Российской Федерации»
else if (data($n/@Utilization) = «143006020100») then «Для обустройства и содержания инженерно-технических сооружений и заграждений»
else if (data($n/@Utilization) = «143006020200») then «Для обустройства и содержания пограничных знаков»
else if (data($n/@Utilization) = «143006020300») then «Для обустройства и содержания пограничных просек»
else if (data($n/@Utilization) = «143006020400») then «Для обустройства и содержания коммуникаций»
else if (data($n/@Utilization) = «143006020500») then «Для обустройства и содержания пунктов пропуска через Государственную границу Российской Федерации»
else if (data($n/@Utilization) = «143006020600») then «Для размещения иных объектов для защиты и охраны Государственной границы Российской Федерации»
else if (data($n/@Utilization) = «143006030000») then «Для размещения иных объектов обороны и безопасности»
else if (data($n/@Utilization) = «143007000000») then «Для размещения иных объектов промышленности, энергетики, транспорта, связи, радиовещания, телевидения, информатики, обеспечения космической деятельности, обороны, безопасности и иного специального назначения»
else if (data($n/@Utilization) = «144000000000») then «Для размещения особо охраняемых историко-культурных и природных объектов (территорий)»
else if (data($n/@Utilization) = «144001000000») then «Для размещения особо охраняемых природных объектов (территорий)»
else if (data($n/@Utilization) = «144001010000») then «Для размещения государственных природных заповедников (в том числе биосферных)»
else if (data($n/@Utilization) = «144001020000») then «Для размещения государственных природных заказников»
else if (data($n/@Utilization) = «144001030000») then «Для размещения национальных парков»
else if (data($n/@Utilization) = «144001040000») then «Для размещения природных парков»
else if (data($n/@Utilization) = «144001050000») then «Для размещения дендрологических парков»
else if (data($n/@Utilization) = «144001060000») then «Для размещения ботанических садов»
else if (data($n/@Utilization) = «144001070000») then «Для размещения объектов санаторного и курортного назначения»
else if (data($n/@Utilization) = «144001080000») then «Территории месторождений минеральных вод, лечебных грязей, рапы лиманов и озер»
else if (data($n/@Utilization) = «144001090000») then «Для традиционного природопользования»
else if (data($n/@Utilization) = «144001100000») then «Для размещения иных особо охраняемых природных территорий (объектов)»
else if (data($n/@Utilization) = «144002000000») then «Для размещения объектов (территорий) природоохранного назначения»
else if (data($n/@Utilization) = «144003000000») then «Для размещения объектов (территорий) рекреационного назначения»
else if (data($n/@Utilization) = «144003010000») then «Для размещения домов отдыха, пансионатов, кемпингов»
else if (data($n/@Utilization) = «144003020000») then «Для размещения объектов физической культуры и спорта»
else if (data($n/@Utilization) = «144003030000») then «Для размещения туристических баз, стационарных и палаточных туристско-оздоровительных лагерей, домов рыболова и охотника, детских туристических станций»
else if (data($n/@Utilization) = «144003040000») then «Для размещения туристических парков»
else if (data($n/@Utilization) = «144003050000») then «Для размещения лесопарков»
else if (data($n/@Utilization) = «144003060000») then «Для размещения учебно-туристических троп и трасс»
else if (data($n/@Utilization) = «144003070000») then «Для размещения детских и спортивных лагерей»
else if (data($n/@Utilization) = «144003080000») then «Для размещения скверов, парков, городских садов»
else if (data($n/@Utilization) = «144003090000») then «Для размещения пляжей»
else if (data($n/@Utilization) = «144003100000») then «Для размещения иных объектов (территорий) рекреационного назначения»
else if (data($n/@Utilization) = «144004000000») then «Для размещения объектов историко-культурного назначения»
else if (data($n/@Utilization) = «144004010000») then «Для размещения объектов культурного наследия народов Российской Федерации (памятников истории и культуры), в том числе объектов археологического наследия»
else if (data($n/@Utilization) = «144004020000») then «Для размещения военных и гражданских захоронений»
else if (data($n/@Utilization) = «144005000000») then «Для размещения иных особо охраняемых историко-культурных и природных объектов (территорий)»
else if (data($n/@Utilization) = «145000000000») then «Для размещения объектов лесного фонда»
else if (data($n/@Utilization) = «145001000000») then «Для размещения лесной растительности»
else if (data($n/@Utilization) = «145002000000») then «Для восстановления лесной растительности»
else if (data($n/@Utilization) = «145003000000») then «Для прочих объектов лесного хозяйства»
else if (data($n/@Utilization) = «146000000000») then «Для размещения объектов водного фонда»
else if (data($n/@Utilization) = «146001000000») then «Под водными объектами»
else if (data($n/@Utilization) = «146002000000») then «Для размещения гидротехнических сооружений»
else if (data($n/@Utilization) = «146003000000») then «Для размещения иных сооружений, расположенных на водных объектах»
else if (data($n/@Utilization) = «147000000000») then «Земли запаса (неиспользуемые)»
else «»
return string-join ( $x, «» )
};
declare function local:ownersNames($RigtsOrEncumbrancesElm) as xs:string
{
let $x:=
for $i in $RigtsOrEncumbrancesElm/*
for $i2 in ($i/*:Owners/*:Owner, $i/*:OwnersRestrictionInFavorem/*:OwnerRestrictionInFavorem)
return
if ( exists($i2/*:Person) ) then
string-join($i2/*:Person/*, » «)
else if ( exists($i2/*:Organization) ) then
$i2/*:Organization/*:Name/text()
else if ( exists($i2/*:Governance) ) then
$i2/*:Governance/*:Name/text()
else ()
return local:str-prep ( string-join($x, «, «) )
};
let $title := concat (
«Тип п.», $dlm,
«Пункт», $dlm,
«Тип м.», $dlm,
«Местоположение», $dlm,
«Адресный номер», $dlm,
«Адрес», $dlm,
«Кадастровый номер», $dlm,
«КН квартала», $dlm,
«КН ЕЗ», $dlm,
«КН предыдущих ЗУ», $dlm,
«КН ОКС на ЗУ», $dlm,
«Дата учета», $dlm,
«Статус», $dlm,
«Тип участка», $dlm,
«Категория», $dlm,
«Разрешенное использование», $dlm,
«Использование (справочник)», $dlm,
«Площадь», $dlm,
«Погрешность», $dlm,
«Стоимость», $dlm,
«Права», $dlm,
«Обременения», $dlm,
«Собственники», $dlm,
«Арендаторы»
)
let $x:=
for $i in ($my_doc//*:Parcel, $my_doc//*:EntryParcel)
return concat (
local:AAdmType($i/*:Location/*:Address), $dlm,
local:AAdmName($i/*:Location/*:Address), $dlm,
data($i/*:Location/*:Address/*:Street/@Type), $dlm,
data($i/*:Location/*:Address/*:Street/@Name), $dlm,
local:ANum($i/*:Location/*:Address), $dlm,
local:addressStr($i/*:Location/*:Address), $dlm,
data($i/@CadastralNumber), $dlm,
concat($i/*:CadastralBlock,$i/ancestor::*:CadastralBlock/@CadastralNumber), $dlm,
concat($i/*:ParentCadastralNumbers/*:CadastralNumber, $i/parent::*:CompositionEZ/parent::*:Parcel/@CadastralNumber), $dlm,
string-join($i/*:PrevCadastralNumbers/*:CadastralNumber, «,»), $dlm,
string-join($i/*:InnerCadastralNumbers/*:CadastralNumber, «,»), $dlm,
data($i/@DateCreated), $dlm,
$state_doc//xs:enumeration[@value=$i/@State]/xs:annotation/xs:documentation/text(), $dlm,
local:parcelType($i), $dlm,
$cat_doc//xs:enumeration[@value=$i/*:Category]/xs:annotation/xs:documentation/text(), $dlm,
local:str-prep($i/*:Utilization/@ByDoc), $dlm,
local:UtilizationKind($i), $dlm,
$i/*:Area/*:Area, $dlm,
$i/*:Area/*:Inaccuracy, $dlm,
data($i/*:CadastralCost/@Value), $dlm,
local:str-prep(string-join ($i/*:Rights/*:Right/*:Name/text(), $dlm)), $dlm,
local:str-prep(string-join ($i/*:Encumbrances/*:Encumbrance/*:Name/text(), $dlm)), $dlm,
local:ownersNames($i/*:Rights), $dlm,
local:ownersNames($i/*:Encumbrances)
)
return string-join ( ($title, $x), $nln )12.02.2016 в 11:21 #2178Весьма отрадно, что кто-то пытается дорабатывать запросы преобразования. Только вот вы зря вставили запрос в текст вопроса. В этом случае искажаются часть символов, например, кавычки заменяются на типографские. Запустить на выполнение этот запрос с ходу не удалось. Просьба прикрепить данный запрос как приложение к вопросу. Может данный запрос еще кому-нибудь будет полезен. Если не захочет прикрепляться как есть с расширением .xq, то запакуйте и прикрепите в виде zip-архива. А проблема с некорректным отображением заголовка при объединении кроется в том, что вы не поправили регулярное выражение для выделения заголовка в настройках преобразования. Для этого открываете файл c:\ProgramData\XMLCON\XMLConverter\Settings\XMLConverter.xml, находите преобразование «НОВЫЙ Запрос характеристик объектов недвижимости, формат CSV» и заменяете строчку <HeaderRegExp>Кадастровый номер.*Статус</HeaderRegExp> на <HeaderRegExp>Тип п\..*Арендаторы</HeaderRegExp>. Если расшифровать это регулярное выражение, то оно означает: выбрать начиная с названия первой колонки до названия последней колонки включительно, а «.*» означает, что между ними любое количество любых символов.
- Ответ изменён 8 года/лет, 2 мес. назад пользователем Андрей Ясевич.
12.02.2016 в 11:54 #2179Не совсем понял где необходимо проставить звездочку. В переменной $title? Файл .xq прикрепить нельзя, поэтому прикладываю в архиве.
Вложения:
You must be logged in to view attached files.12.02.2016 в 13:06 #2181Нет. То как объединять файлы записано не в запросе преобразования, а в настройках преобразования. Все настройки преобразования записаны в одном xml-файле, который называется XMLConverter.xml и лежит в папке Settings ресурсов. Полный путь получается c:\ProgramData\XMLCON\XMLConverter\Settings\XMLConverter.xml. Оказывается мой ответ тоже немного криво отобразился — пропали теги XML. Поэтому не совсем понятно. Исправил.
12.02.2016 в 13:49 #2183Спасибо, все работает как надо!
И еще вопрос. При обработке некоторых файлов в логе конвертера появляется сообщение «Ошибка! Добавляемый файл не правильной структуры — пропущен». При этом 99% при конвертации группы файлов обрабатываются корректно. Не критично, но хотелось бы знать, в чем может быть причина?- Ответ изменён 8 года/лет, 2 мес. назад пользователем Николай.
12.02.2016 в 14:15 #2185Вообще объединение работает по следующему принципу. По регулярному выражению HeaderRegExp выделяется заголовок файлов. По регулярному выражению FooterRegExp выделяется футер файлов. Затем с первого файла пишется заголовок, потом пишется тело каждого объединяемого файла (то, что между заголовком и футером), и в конце пишется футер с первого файла, с которого брался заголовок. В большинстве преобразований конечно же футера нет.
12.02.2016 в 14:21 #2186Когда пишется «Ошибка! Добавляемый файл не правильной структуры — пропущен» значит скорей всего данный файл имеет пустое тело. Например, если преобразовывать выписки на участки в графические форматы, то для декларативных участков, у которых нет графики, формируемые файлы будут некорректными, т.к. в исходных файлах не было координат.
12.02.2016 в 15:13 #2187Я конвертировал xml КПТ, и таким образом, как предполагаю, в теле файла просто не было участков, только сведения о квартале, границах и т.д. Сейчас не могу поэкспериментировать, файлов под рукой нет, приду на работу, проверю. Но суть ясна, спасибо за разъяснение.
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.