XQuery. Запроc данных об участках в формат csv

Главная Форум XML Конвертер XQuery. Запроc данных об участках в формат csv

В этой теме 8 ответов, 2 участника, последнее обновление  Николай 8 года/лет, 2 мес. назад.

Просмотр 9 сообщений - с 1 по 9 (из 9 всего)
  • Автор
    Сообщения
  • #2174

    Николай
    Участник

    Здравствуйте, Андрей! Переработал стандартный запрос New_ZU_CSV.xq, добавив к нему дополнительные данные. Запрос работает без ошибок, но при конвертации более одного файла xml, заголовки в результирующем файле csv (первая строчка) смещаются в две строки. При конвертации одного xml файла все в порядке. В чем может быть причина?

    #2175

    Николай
    Участник

    xquery 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 )

    • Ответ изменён 8 года/лет, 2 мес. назад пользователем  Николай.
    • Ответ изменён 8 года/лет, 2 мес. назад пользователем  Николай.
    #2178

    Андрей Ясевич
    Хранитель

    Весьма отрадно, что кто-то пытается дорабатывать запросы преобразования. Только вот вы зря вставили запрос в текст вопроса. В этом случае искажаются часть символов, например, кавычки заменяются на типографские. Запустить на выполнение этот запрос с ходу не удалось. Просьба прикрепить данный запрос как приложение к вопросу. Может данный запрос еще кому-нибудь будет полезен. Если не захочет прикрепляться как есть с расширением .xq, то запакуйте и прикрепите в виде zip-архива. А проблема с некорректным отображением заголовка при объединении кроется в том, что вы не поправили регулярное выражение для выделения заголовка в настройках преобразования. Для этого открываете файл c:\ProgramData\XMLCON\XMLConverter\Settings\XMLConverter.xml, находите преобразование «НОВЫЙ Запрос характеристик объектов недвижимости, формат CSV» и заменяете строчку <HeaderRegExp>Кадастровый номер.*Статус</HeaderRegExp> на <HeaderRegExp>Тип п\..*Арендаторы</HeaderRegExp>. Если расшифровать это регулярное выражение, то оно означает: выбрать начиная с названия первой колонки до названия последней колонки включительно, а «.*» означает, что между ними любое количество любых символов.

    #2179

    Николай
    Участник

    Не совсем понял где необходимо проставить звездочку. В переменной $title? Файл .xq прикрепить нельзя, поэтому прикладываю в архиве.

    Вложения:
    You must be logged in to view attached files.
    #2181

    Андрей Ясевич
    Хранитель

    Нет. То как объединять файлы записано не в запросе преобразования, а в настройках преобразования. Все настройки преобразования записаны в одном xml-файле, который называется XMLConverter.xml и лежит в папке Settings ресурсов. Полный путь получается c:\ProgramData\XMLCON\XMLConverter\Settings\XMLConverter.xml. Оказывается мой ответ тоже немного криво отобразился — пропали теги XML. Поэтому не совсем понятно. Исправил.

    #2183

    Николай
    Участник

    Спасибо, все работает как надо!
    И еще вопрос. При обработке некоторых файлов в логе конвертера появляется сообщение «Ошибка! Добавляемый файл не правильной структуры — пропущен». При этом 99% при конвертации группы файлов обрабатываются корректно. Не критично, но хотелось бы знать, в чем может быть причина?

    • Ответ изменён 8 года/лет, 2 мес. назад пользователем  Николай.
    #2185

    Андрей Ясевич
    Хранитель

    Вообще объединение работает по следующему принципу. По регулярному выражению HeaderRegExp выделяется заголовок файлов. По регулярному выражению FooterRegExp выделяется футер файлов. Затем с первого файла пишется заголовок, потом пишется тело каждого объединяемого файла (то, что между заголовком и футером), и в конце пишется футер с первого файла, с которого брался заголовок. В большинстве преобразований конечно же футера нет.

    #2186

    Андрей Ясевич
    Хранитель

    Когда пишется «Ошибка! Добавляемый файл не правильной структуры — пропущен» значит скорей всего данный файл имеет пустое тело. Например, если преобразовывать выписки на участки в графические форматы, то для декларативных участков, у которых нет графики, формируемые файлы будут некорректными, т.к. в исходных файлах не было координат.

    #2187

    Николай
    Участник

    Я конвертировал xml КПТ, и таким образом, как предполагаю, в теле файла просто не было участков, только сведения о квартале, границах и т.д. Сейчас не могу поэкспериментировать, файлов под рукой нет, приду на работу, проверю. Но суть ясна, спасибо за разъяснение.

Просмотр 9 сообщений - с 1 по 9 (из 9 всего)

Для ответа в этой теме необходимо авторизоваться.