2012-09-07 2 views
1

시간이 많이 걸렸으므로 맨 처음 위치가 가장 낮은 위치를 찾지 못하는 예제는 없습니다. 나는XSLT ... XML에서 최소값을 찾고 변수를 설정할 수 없습니다.

예 XML .... 값이 반환 대신에 '거짓'받고 있어요 :

<?xml version="1.0"?> 
<GetLowestOfferListingsForASINResponse xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01"> 
    <GetLowestOfferListingsForASINResult ASIN="0470067802" status="Success"> 
    <AllOfferListingsConsidered>false</AllOfferListingsConsidered> 
    <Product xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01" xmlns:ns2="http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd"> 
     <LowestOfferListings> 
     <LowestOfferListing> 
      <Qualifiers> 
      <ItemCondition>Used</ItemCondition> 
      <ItemSubcondition>Good</ItemSubcondition> 
      </Qualifiers> 
      <Price> 
      <LandedPrice> 
       <Amount>15.71</Amount> 
      </LandedPrice> 
      </Price> 
     </LowestOfferListing> 
     <LowestOfferListing> 
      <Qualifiers> 
      <ItemCondition>Used</ItemCondition> 
      <ItemSubcondition>Good</ItemSubcondition> 
      </Qualifiers> 
      <Price> 
      <LandedPrice> 
       <Amount>16.71</Amount> 
      </LandedPrice> 
      </Price> 
     </LowestOfferListing> 
     <LowestOfferListing> 
      <Qualifiers> 
      <ItemCondition>Used</ItemCondition> 
      <ItemSubcondition>Good</ItemSubcondition> 
      </Qualifiers> 
      <Price> 
      <LandedPrice> 
       <Amount>18.71</Amount> 
      </LandedPrice> 
      </Price> 
     </LowestOfferListing> 
     </LowestOfferListings> 
    </Product> 
    </GetLowestOfferListingsForASINResult> 
</GetLowestOfferListingsForASINResponse> 

예 XSLT를 제대로 작동하지 않는 :

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:amz="http://mws.amazonservices.com/schema/Products/2011-10-01" exclude-result-prefixes="amz"> 
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/> 
<xsl:template match="/"> 
    <xsl:variable name="MIN_Landed"> 
    <xsl:for-each select="//Amount"> 
    <xsl:sort data-type="number" order="ascending"/> 
    <xsl:if test="position()=1"><xsl:value-of select="."/></xsl:if> 
    </xsl:for-each> 
    </xsl:variable> 
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult"> 
    <ERRORCODE>0</ERRORCODE> 
    <PRODUCT BUILD="" NAME="" VERSION=""/> 
    <DATABASE DATEFORMAT="M/d/yyyy" LAYOUT="" NAME="" RECORDS="1" TIMEFORMAT="h:mm:ss a"/> 
    <METADATA> 
     <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="DATA" TYPE="TEXT"/> 
     <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Min_Landed" TYPE="TEXT"/> 
    </METADATA> 
    <RESULTSET> 
     <xsl:attribute name="FOUND">1</xsl:attribute> 
     <xsl:for-each select="amz:GetLowestOfferListingsForASINResponse/amz:GetLowestOfferListingsForASINResult/amz:Product/amz:LowestOfferListings/amz:LowestOfferListing"> 
      <ROW> 
       <xsl:attribute name="MODID">0</xsl:attribute> 
       <xsl:attribute name="RECORDID">1</xsl:attribute> 
       <COL> 
        <DATA> 
          <xsl:value-of select="amz:Qualifiers/amz:ItemCondition"/> 
        </DATA> 
       </COL> 
       <COL> 
        <DATA> 
          <xsl:value-of select="$MIN_Landed"/> 
        </DATA> 
       </COL> 
      </ROW> 
     </xsl:for-each> 
    </RESULTSET> 
    </FMPXMLRESULT> 
    </xsl:template> 
</xsl:stylesheet> 

도와주세요!

정말 작업을 수행하는

예 XSLT ......이 노출 된 뼈은 응답

분명히 주문 사항에 벗었 여기에 너무 많은 아마존 코드를 게시하고 싶지만하지 않았다 :

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:amz="http://mws.amazonservices.com/schema/Products/2011-10-01" exclude-result-prefixes="amz"> 
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/> 
<xsl:template match="/"> 
    <xsl:variable name="MIN_Landed"> 
    <xsl:for-each select="//Amount"> 
    <xsl:sort data-type="number" order="ascending"/> 
    <xsl:if test="position()=1"><xsl:value-of select="."/></xsl:if> 
    </xsl:for-each> 
    </xsl:variable> 
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult"> 
    <ERRORCODE>0</ERRORCODE> 
    <PRODUCT BUILD="" NAME="" VERSION=""/> 
    <DATABASE DATEFORMAT="M/d/yyyy" LAYOUT="" NAME="" RECORDS="1" TIMEFORMAT="h:mm:ss a"/> 
    <METADATA> 
     <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="DATA" TYPE="TEXT"/> 
     <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Min_Landed" TYPE="TEXT"/> 
    </METADATA> 
    <RESULTSET> 
     <xsl:attribute name="FOUND">1</xsl:attribute> 
     <xsl:for-each select="amz:GetLowestOfferListingsForASINResponse/amz:GetLowestOfferListingsForASINResult/amz:Product/amz:LowestOfferListings/amz:LowestOfferListing"> 
      <ROW> 
       <xsl:attribute name="MODID">0</xsl:attribute> 
       <xsl:attribute name="RECORDID">1</xsl:attribute> 
       <COL> 
        <DATA> 
          <xsl:value-of select="$MIN_Landed"/> 
        </DATA> 
       </COL> 
       <COL> 
        <DATA> 
          <xsl:value-of select="amz:Qualifiers/amz:ItemCondition"/> 
        </DATA> 
       </COL> 
      </ROW> 
     </xsl:for-each> 
    </RESULTSET> 
    </FMPXMLRESULT> 
    </xsl:template> 
</xsl:stylesheet> 
+0

질문에는 질문, 예상 출력이 기재되어 있지 않은. 귀하의 질문은 무엇인가? –

+0

반복적이었습니다. 그의 문제는 해결되었습니다. –

답변

0

그것은 당신이 실제로 작업중인 코드 또는 네임 스페이스와 같은 가능한 모든 요소를 ​​제시 적어도 팩스를 보여주기 위해 지불한다. 바꾸기 :

<xsl:for-each select="//amz:Amount"> 

이 문제가 해결되지 않으면 xsl 외부에 문제가있는 것입니다. 이것은 당신이 제공 한 소스에 대해 작동합니다.


아카이브

당신의 코드가 XSL에서 앉아,도 분명히 원본 문서의 모든 금액은 항상 하나의 A, B, C의 각 아래에 앉아 있는지 여부입니다 귀하의 예는 표시되지 않습니다 , d, e, f, 가격 요소 또는 루트 요소가있는 경우, 그렇다면 무엇입니까? 또한 코드는 변수 태그를 닫지 않으며 변수가 출력되는 방법도 표시하지 않습니다.

위의 경우 아무 것도 잘못되지 않는다고 가정하면 position() = '1'을 사용하면 정렬 후 최상위 위치에 노드를 찾고 있기 때문에 'order'속성이 오름차순이어야합니다. 오름차순은 가장 낮은 값을 먼저 설정합니다.

그 자체로 다음 코드를 출력에 관계없이 원본 문서 구조를 원본 문서의 최소값 :

<xsl:template match="/"> 
    <xsl:variable name="MIN_Landed"> 
     <xsl:for-each select="//Amount"> 
      <xsl:sort data-type="number" order="ascending"/> 
      <xsl:if test="position()=1"> 
       <xsl:value-of select="."/> 
      </xsl:if> 
     </xsl:for-each> 
    </xsl:variable> 
    <xsl:value-of select = "$MIN_Landed" /> 
</xsl:template> 
+0

모든 것을 버리지 않고 필자의 원본을 편집하여 더 좋은 아이디어를 내기를 바랍니다. 나는 많은 것들을 위해이 같은 기본적인 스타일의 템플릿을 사용했고, 지금까지 필요에 따라 그것을 편집하는 데 문제가 없었다. 추신 -이 버전은 여전히 ​​실제 내용 대신 '거짓'이 있습니다. – Oneida

+1

루트가 포함 된 샘플 소스 문서를 제공하십시오. 또한, 당신이 받고있는이 '거짓'결과는 어떻습니까? 변환은 '거짓'보다 더 많은 출력을 생성해야합니다. –

+0

많은 좌절 후 나는 마침내 그것을 얻었다! 나는 순서를 바꿀 필요가 있었다. ... – Oneida

관련 문제