Xslt 1.0 как группировать из разных узлов - PullRequest
0 голосов
/ 21 декабря 2018

Мне очень трудно обдумать это.Я понимаю, что должен использовать группировку muenchian, но я не могу найти ответ.Я долго пробовал и искал его в сети, но, пожалуйста, если кто-нибудь может помочь мне в правильном направлении, я был бы очень благодарен.

Ex XML:

    <?xml version="1.0" encoding="utf-8"?>
<LandXML xmlns="http://www.landxml.org/schema/LandXML-1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.landxml.org/schema/LandXML-1.2 http://www.landxml.org/schema/LandXML-1.2/LandXML-1.2.xsd" version="1.2" date="2018-09-14" time="15:05:50.31" readOnly="false" language="English">
    <PlanFeatures>
        <PlanFeature name="Slk_001">
            <CoordGeom>
                <Line oID="Slk_001_0001">
                    <Start pntRef="1">6592673.343502 139459.604265 24.917669</Start>
                    <End pntRef="2">6592673.774028 139457.284208 24.653865</End>
                </Line>
                <Line oID="Slk_001_0002">
                    <Start pntRef="2">6592673.774028 139457.284208 24.653865</Start>
                    <End pntRef="3">6592674.151002 139455.810929 24.809685</End>
                </Line>
                <Line oID="Slk_001_0004">
                    <Start pntRef="3">6592672.582008 139453.101873 24.364131</Start>
                    <End pntRef="4">6592671.526538 139452.567873 24.416917</End>
                </Line>
            </CoordGeom>
        </PlanFeature>
    </PlanFeatures>
    <Survey>
        <SurveyHeader name="Exempel_0"/>
        <Equipment>
            <InstrumentDetails id="TPS_3" manufacturer="" model="" serialNumber="" horizCollimation="-0.000019383907691" vertCollimation="0.000000000000000">
                <Corrections>
                </Corrections>
            </InstrumentDetails>
        </Equipment>
        <InstrumentSetup id="TPSSetupID_3_2" instrumentDetailsID="TPS_3" stationName="TS0004" instrumentHeight="0.000000" orientationAzimuth="0.000000000000000">
            <InstrumentPoint pntRef="TS0004" timeStamp="2016-01-12T10:49:19.40">6592675.764365 139452.278911 24.383224</InstrumentPoint>
        </InstrumentSetup>
        <ObservationGroup id="oTPSSetupID_3_2">
            <TargetPoint name="TS0004" pntRef="TS0004" >6592675.764365 139452.278911 24.383224</TargetPoint>
            <RawObservation setupID="TPSSetupID_3_2" purpose="normal" targetHeight="1.300000" horizAngle="198.120384747287630" zenithAngle="100.778693186984060" horizDistance="4.695549" slopeDistance="4.695900" directFace="true" timeStamp="2016-01-12T11:18:01.18">
                <TargetPoint name="1" pntRef="1" >6592671.070862 139452.417526 23.025789</TargetPoint>
            </RawObservation>
            <RawObservation setupID="TPSSetupID_3_2" purpose="normal" targetHeight="1.300000" horizAngle="192.225180379435360" zenithAngle="100.896273207413590" horizDistance="3.856518" slopeDistance="3.856900" directFace="true" timeStamp="2016-01-12T11:18:39.16">
                <TargetPoint name="2" pntRef="2" >6592671.936571 139452.748724 23.028927</TargetPoint>
            </RawObservation>
        </ObservationGroup>
    </Survey>
    <Survey>
        <SurveyHeader name="Exempel_1"/>
        <Equipment>
            <InstrumentDetails id="TPS_3" manufacturer="" model="" serialNumber="" horizCollimation="-0.000019383907691" vertCollimation="0.000000000000000">
                <Corrections>
                </Corrections>
            </InstrumentDetails>
        </Equipment>
        <InstrumentSetup id="TPSSetupID_3_3" instrumentDetailsID="TPS_4" stationName="TS0005" instrumentHeight="0.000000" orientationAzimuth="0.000000000000000">
            <InstrumentPoint pntRef="TS0005" timeStamp="2016-01-12T10:49:19.40">6592675.764365 139452.278911 24.383224</InstrumentPoint>
        </InstrumentSetup>
        <ObservationGroup id="oTPSSetupID_3_3">
            <TargetPoint name="TS0005" pntRef="TS0005" >6592675.764365 139452.278911 24.383224</TargetPoint>
            <RawObservation setupID="TPSSetupID_3_3" purpose="normal" targetHeight="1.300000" horizAngle="192.225180379435360" zenithAngle="100.896273207413590" horizDistance="3.856518" slopeDistance="3.856900" directFace="true" timeStamp="2016-01-12T11:18:39.16">
                <TargetPoint name="3" pntRef="3" >6592671.936571 139452.748724 23.028927</TargetPoint>
            </RawObservation>
            <RawObservation setupID="TPSSetupID_3_3" purpose="normal" targetHeight="1.300000" horizAngle="218.562038769404860" zenithAngle="100.978902374112200" horizDistance="3.551780" slopeDistance="3.552200" directFace="true" timeStamp="2016-01-12T11:19:13.96">
                <TargetPoint name="4" pntRef="4" >6592672.362494 139451.257923 23.028607</TargetPoint>
            </RawObservation>
        </ObservationGroup>
    </Survey>
</LandXML>

Требуется вывод:

TPSSetupID_3_2
Line
Slk_001
Points
1
2

TPSSetupID_3_3
Line
Slk_001
Points
3
4

Как видите, линия состоит из нескольких точек из разных "InstrumentSetup".Есть идеи?Мне не нужно полное решение, но я даже не знаю, с чего начать.И это должно быть xslt 1.0

Разъяснение : Что я хотел бы знать, это: 1. Как будет разработан ключ?2. Должен ли я начать с «InstrumentSetup» (естественный выбор) или это может быть идея начать с «PlanFeature»?

...