March 14, 200520 yr Author Hi, all. I am importing some XML into a large FM solution. One of the XML elements references another element elsewhere in the file: <?xml version="1.0"?> <Document> <Transaction> <Client> <Matter> <Assets> <Miscellaneous> <AssetID>35</AssetID> <Value>56000</Value> </Miscellaneous> </Assets> <Bequests> <Bequest> <AssetPercentage>75</AssetPercentage> <AssetID>35</AssetID> </Bequest> </Bequests> </Matter> </Client> </Transaction> </Document> I can import the <Miscellaneous> element into FM using one transformation, then import the <Bequest> element into another file using a different transformation, do some multiplication, and i come up with a total value for the bequest of 42000. Document/Transaction/Client/Matter/Assets/Miscellaneous/Value = 56000 Document/Transaction/Client/Matter/Bequests/Bequest/AssetPercentage = 75 56000 * ( 75 / 100 ) = 42000 This is cumbersome. I cannot change the original XML. Is there a simpler method than importing to two separate FM files? Jerry
March 14, 200520 yr Hi, all. I am importing some XML into a large FM solution. One of the XML elements references another element elsewhere in the file: <?xml version="1.0"?> <Document> <Transaction> <Client> <Matter> <Assets> <Miscellaneous> <AssetID>35</AssetID> <Value>56000</Value> </Miscellaneous> </Assets> <Bequests> <Bequest> <AssetPercentage>75</AssetPercentage> <AssetID>35</AssetID> </Bequest> </Bequests> </Matter> </Client> </Transaction> </Document> I can import the <Miscellaneous> element into FM using one transformation, then import the <Bequest> element into another file using a different transformation, do some multiplication, and i come up with a total value for the bequest of 42000. Document/Transaction/Client/Matter/Assets/Miscellaneous/Value = 56000 Document/Transaction/Client/Matter/Bequests/Bequest/AssetPercentage = 75 56000 * ( 75 / 100 ) = 42000 This is cumbersome. I cannot change the original XML. Is there a simpler method than importing to two separate FM files? Jerry
March 14, 200520 yr Author Hi, all. I am importing some XML into a large FM solution. One of the XML elements references another element elsewhere in the file: <?xml version="1.0"?> <Document> <Transaction> <Client> <Matter> <Assets> <Miscellaneous> <AssetID>35</AssetID> <Value>56000</Value> </Miscellaneous> </Assets> <Bequests> <Bequest> <AssetPercentage>75</AssetPercentage> <AssetID>35</AssetID> </Bequest> </Bequests> </Matter> </Client> </Transaction> </Document> I can import the <Miscellaneous> element into FM using one transformation, then import the <Bequest> element into another file using a different transformation, do some multiplication, and i come up with a total value for the bequest of 42000. Document/Transaction/Client/Matter/Assets/Miscellaneous/Value = 56000 Document/Transaction/Client/Matter/Bequests/Bequest/AssetPercentage = 75 56000 * ( 75 / 100 ) = 42000 This is cumbersome. I cannot change the original XML. Is there a simpler method than importing to two separate FM files? Jerry
March 14, 200520 yr Author Also, any idea why all the tags disappeared when i originally posted this using the UBBCode for [ code] instead of [ quote]? I though i might control it by turning off HTML for this post, but i can't see where to do that. J
March 14, 200520 yr Author Also, any idea why all the tags disappeared when i originally posted this using the UBBCode for [ code] instead of [ quote]? I though i might control it by turning off HTML for this post, but i can't see where to do that. J
March 14, 200520 yr Author Also, any idea why all the tags disappeared when i originally posted this using the UBBCode for [ code] instead of [ quote]? I though i might control it by turning off HTML for this post, but i can't see where to do that. J
March 14, 200520 yr I'm not sure what exactly you want to do. I mean, you could just import: Document/Transaction/Client/Matter/Assets/Miscellaneous/Value again, with your 2nd XSL, into your Assets table, then do the math in FileMaker. It would mean an extra field, but so what? You could alternatively do the math in your 2nd XSL, by adding an element for the total, and importing that: <xsl:for-each select="Document/Transaction/Client/Matter/Bequests/Bequest/AssetPercentage"> <xsl:element name="AssetTotal"> <xsl:value-of select=". div 100 *../../../Assets/Miscellaneous/Value"/> </xsl:element> </xsl:for-each> I've not done this before, but the above appears to work. This is assuming there is only 1 of them in each, which is probably not a safe assumption. It would be better to check the AssetID, which is in either: <xsl:for-each select="Document/Transaction/Client/Matter/Bequests/Bequest"> <xsl:variable name="AssID" select="AssetID"/> <xsl:element name="AssetTotal"> <xsl:value-of select="AssetPercentage div 100 * ../../Assets/Miscellaneous/Value[../AssetID=$AssID]"/> </xsl:element> </xsl:for-each> [i didn't add the FileMaker stuff. The METADATA field is "AssetTotal." And you'd need the requisite <COL><DATA> tags. Also I'm using "<xsl:for-each>", whereas you might be using separate templates.] Like I said, I haven't done this math operation before. Also, I just paste the xml code in, it doesn't seem to care about the tags. I believe I have html turned off in my preferences (if there is such).
March 14, 200520 yr I'm not sure what exactly you want to do. I mean, you could just import: Document/Transaction/Client/Matter/Assets/Miscellaneous/Value again, with your 2nd XSL, into your Assets table, then do the math in FileMaker. It would mean an extra field, but so what? You could alternatively do the math in your 2nd XSL, by adding an element for the total, and importing that: <xsl:for-each select="Document/Transaction/Client/Matter/Bequests/Bequest/AssetPercentage"> <xsl:element name="AssetTotal"> <xsl:value-of select=". div 100 *../../../Assets/Miscellaneous/Value"/> </xsl:element> </xsl:for-each> I've not done this before, but the above appears to work. This is assuming there is only 1 of them in each, which is probably not a safe assumption. It would be better to check the AssetID, which is in either: <xsl:for-each select="Document/Transaction/Client/Matter/Bequests/Bequest"> <xsl:variable name="AssID" select="AssetID"/> <xsl:element name="AssetTotal"> <xsl:value-of select="AssetPercentage div 100 * ../../Assets/Miscellaneous/Value[../AssetID=$AssID]"/> </xsl:element> </xsl:for-each> [i didn't add the FileMaker stuff. The METADATA field is "AssetTotal." And you'd need the requisite <COL><DATA> tags. Also I'm using "<xsl:for-each>", whereas you might be using separate templates.] Like I said, I haven't done this math operation before. Also, I just paste the xml code in, it doesn't seem to care about the tags. I believe I have html turned off in my preferences (if there is such).
March 14, 200520 yr I'm not sure what exactly you want to do. I mean, you could just import: Document/Transaction/Client/Matter/Assets/Miscellaneous/Value again, with your 2nd XSL, into your Assets table, then do the math in FileMaker. It would mean an extra field, but so what? You could alternatively do the math in your 2nd XSL, by adding an element for the total, and importing that: <xsl:for-each select="Document/Transaction/Client/Matter/Bequests/Bequest/AssetPercentage"> <xsl:element name="AssetTotal"> <xsl:value-of select=". div 100 *../../../Assets/Miscellaneous/Value"/> </xsl:element> </xsl:for-each> I've not done this before, but the above appears to work. This is assuming there is only 1 of them in each, which is probably not a safe assumption. It would be better to check the AssetID, which is in either: <xsl:for-each select="Document/Transaction/Client/Matter/Bequests/Bequest"> <xsl:variable name="AssID" select="AssetID"/> <xsl:element name="AssetTotal"> <xsl:value-of select="AssetPercentage div 100 * ../../Assets/Miscellaneous/Value[../AssetID=$AssID]"/> </xsl:element> </xsl:for-each> [i didn't add the FileMaker stuff. The METADATA field is "AssetTotal." And you'd need the requisite <COL><DATA> tags. Also I'm using "<xsl:for-each>", whereas you might be using separate templates.] Like I said, I haven't done this math operation before. Also, I just paste the xml code in, it doesn't seem to care about the tags. I believe I have html turned off in my preferences (if there is such).
March 14, 200520 yr Author This is assuming there is only 1 of them in each Right. I should have specified that the source XML is much more extensive, so ../../../Assets/Miscellaneous/Value will not work if the desired Miscellaneous element is not the first element under the Assets element. The reason i'd prefer not to do the math in FMP is because the logic starts to push the limits of my brain. There is a whole lot of other stuff going on that i haven't included in the issue because it's not quite relevant; i'm using 5 XSLTs, 5 FMP files, and maybe 10 scripts to do all the processing necessary. I'd like to get this part out of the way using XSLT for that reason. It would be better to check the AssetID So you think looping through each asset till i find the right one is the best idea? I was shying away from that, but that's partly because the syntax you've used above with the xsl:variable syntax is new to me. That looks a whole lot cleaner than what i would have come up with. Conceptually, it looks like it is the right idea; let me try to implement it and i'll see if it works. Fenton, thanks a ton, once again. J
March 14, 200520 yr Author This is assuming there is only 1 of them in each Right. I should have specified that the source XML is much more extensive, so ../../../Assets/Miscellaneous/Value will not work if the desired Miscellaneous element is not the first element under the Assets element. The reason i'd prefer not to do the math in FMP is because the logic starts to push the limits of my brain. There is a whole lot of other stuff going on that i haven't included in the issue because it's not quite relevant; i'm using 5 XSLTs, 5 FMP files, and maybe 10 scripts to do all the processing necessary. I'd like to get this part out of the way using XSLT for that reason. It would be better to check the AssetID So you think looping through each asset till i find the right one is the best idea? I was shying away from that, but that's partly because the syntax you've used above with the xsl:variable syntax is new to me. That looks a whole lot cleaner than what i would have come up with. Conceptually, it looks like it is the right idea; let me try to implement it and i'll see if it works. Fenton, thanks a ton, once again. J
March 14, 200520 yr Author This is assuming there is only 1 of them in each Right. I should have specified that the source XML is much more extensive, so ../../../Assets/Miscellaneous/Value will not work if the desired Miscellaneous element is not the first element under the Assets element. The reason i'd prefer not to do the math in FMP is because the logic starts to push the limits of my brain. There is a whole lot of other stuff going on that i haven't included in the issue because it's not quite relevant; i'm using 5 XSLTs, 5 FMP files, and maybe 10 scripts to do all the processing necessary. I'd like to get this part out of the way using XSLT for that reason. It would be better to check the AssetID So you think looping through each asset till i find the right one is the best idea? I was shying away from that, but that's partly because the syntax you've used above with the xsl:variable syntax is new to me. That looks a whole lot cleaner than what i would have come up with. Conceptually, it looks like it is the right idea; let me try to implement it and i'll see if it works. Fenton, thanks a ton, once again. J
March 14, 200520 yr Author <?xml version="1.0"?> <Document> <Transaction> <Client> <Matter> <Assets> <Miscellaneous> <AssetID>35</AssetID> <Value>56000</Value> </Miscellaneous> </Assets> <Bequests> <Bequest> <AssetPercentage>75</AssetPercentage> <AssetID>35</AssetID> </Bequest> </Bequests> </Matter> </Client> </Transaction> </Document> Do you see this with all XML tags? If so, that indicates i have a display issue rather than a posting issue. J
March 14, 200520 yr Author <?xml version="1.0"?> <Document> <Transaction> <Client> <Matter> <Assets> <Miscellaneous> <AssetID>35</AssetID> <Value>56000</Value> </Miscellaneous> </Assets> <Bequests> <Bequest> <AssetPercentage>75</AssetPercentage> <AssetID>35</AssetID> </Bequest> </Bequests> </Matter> </Client> </Transaction> </Document> Do you see this with all XML tags? If so, that indicates i have a display issue rather than a posting issue. J
March 14, 200520 yr Author <?xml version="1.0"?> <Document> <Transaction> <Client> <Matter> <Assets> <Miscellaneous> <AssetID>35</AssetID> <Value>56000</Value> </Miscellaneous> </Assets> <Bequests> <Bequest> <AssetPercentage>75</AssetPercentage> <AssetID>35</AssetID> </Bequest> </Bequests> </Matter> </Client> </Transaction> </Document> Do you see this with all XML tags? If so, that indicates i have a display issue rather than a posting issue. J
March 14, 200520 yr I complained also once. You have to use < for every < . And &amp;lt; for every <. And &amp;&amp;lt; for every &amp;lt;. And ... Martin
March 14, 200520 yr I complained also once. You have to use < for every < . And &amp;lt; for every <. And &amp;&amp;lt; for every &amp;lt;. And ... Martin
March 14, 200520 yr I complained also once. You have to use < for every < . And &amp;lt; for every <. And &amp;&amp;lt; for every &amp;lt;. And ... Martin
March 14, 200520 yr Author <Tag> <Tag> <Tag> <Tag> Well, i edited my earlier post and it didn't work, but here it does. Whatever. Thanks for the tip, Martin. J
March 14, 200520 yr Author <Tag> <Tag> <Tag> <Tag> Well, i edited my earlier post and it didn't work, but here it does. Whatever. Thanks for the tip, Martin. J
March 14, 200520 yr Author <Tag> <Tag> <Tag> <Tag> Well, i edited my earlier post and it didn't work, but here it does. Whatever. Thanks for the tip, Martin. J
March 14, 200520 yr So you think looping through each asset till i find the right one is the best idea? I was shying away from that, but that's partly because the syntax you've used above with the xsl:variable syntax is new to me. <xsl:for-each select="Document/Transaction/Client/Matter/Bequests/Bequest">
March 14, 200520 yr So you think looping through each asset till i find the right one is the best idea? I was shying away from that, but that's partly because the syntax you've used above with the xsl:variable syntax is new to me. <xsl:for-each select="Document/Transaction/Client/Matter/Bequests/Bequest">
March 14, 200520 yr So you think looping through each asset till i find the right one is the best idea? I was shying away from that, but that's partly because the syntax you've used above with the xsl:variable syntax is new to me. <xsl:for-each select="Document/Transaction/Client/Matter/Bequests/Bequest">
March 14, 200520 yr Author That did the trick! I was a little sloppy in my use of the word "looping" earlier... i guess the XSLT is not looping as far as we can see, though i imagine it does have to loop through elements until it finds what it is looking for. In any case, i can see how this would be a very convenient operator to avoid the whole <xsl:for-each/> loop process. (My initial thought was to use another for-each loop, which would have been the fourth nested for-each loop, and that was starting to make me squeamish. It just seems like inefficient design.) Oddly enough, I don't have to use & lt; for <. I don't know why, but I'm glad. You should be glad! Another Mac side-effect, perhaps?
March 14, 200520 yr Author That did the trick! I was a little sloppy in my use of the word "looping" earlier... i guess the XSLT is not looping as far as we can see, though i imagine it does have to loop through elements until it finds what it is looking for. In any case, i can see how this would be a very convenient operator to avoid the whole <xsl:for-each/> loop process. (My initial thought was to use another for-each loop, which would have been the fourth nested for-each loop, and that was starting to make me squeamish. It just seems like inefficient design.) Oddly enough, I don't have to use & lt; for <. I don't know why, but I'm glad. You should be glad! Another Mac side-effect, perhaps?
March 14, 200520 yr Author That did the trick! I was a little sloppy in my use of the word "looping" earlier... i guess the XSLT is not looping as far as we can see, though i imagine it does have to loop through elements until it finds what it is looking for. In any case, i can see how this would be a very convenient operator to avoid the whole <xsl:for-each/> loop process. (My initial thought was to use another for-each loop, which would have been the fourth nested for-each loop, and that was starting to make me squeamish. It just seems like inefficient design.) Oddly enough, I don't have to use & lt; for <. I don't know why, but I'm glad. You should be glad! Another Mac side-effect, perhaps?
March 14, 200520 yr No, not a Mac side-effect, I use also a Mac. I think it's like Fenton hinted before: Avoid UBBCode and HTML when posting. < . Aha. This was not a <. Sorry for mixing something else into this thread - Fenton's analysis of your XML was really nice.
March 14, 200520 yr No, not a Mac side-effect, I use also a Mac. I think it's like Fenton hinted before: Avoid UBBCode and HTML when posting. < . Aha. This was not a <. Sorry for mixing something else into this thread - Fenton's analysis of your XML was really nice.
March 14, 200520 yr No, not a Mac side-effect, I use also a Mac. I think it's like Fenton hinted before: Avoid UBBCode and HTML when posting. < . Aha. This was not a <. Sorry for mixing something else into this thread - Fenton's analysis of your XML was really nice.
March 15, 200520 yr Nice new hat QuinTech :-] It's difficult for we FileMaker developers to understand the "template" like mechanism of XSL. Some of what we think would require an explicit loop is already part of its matching ability. It procedes in a linear manner, with its "<xsl:template>" and "<xsl:for-each>" tags, but can also test against or get data anywhere else in the document. It can also put the same data twice, only get some data, and even add data. The test syntax, [this here=that there, or some other condition] or, in our case above, [that there=this here], can be all kinds of things. The trick is to be able to specify what/where in the hierarchy you want to test against. The variable was created specifically because when you're "that there" you're no longer "this here," so you need to capture "this here" first (just like setting a global) before you go. You can alternatively use the "current()" function, but that's messier. If what's in the brackets is a number, or evaluates to a number, instead of being a test, then it specifies the position at which to get data. We could also have solved the problem that way. But that would assume that there was exact symmetry between the Assets and Bequests. Maybe there is? <xsl:for-each select="Document/Transaction/Client/Matter/Bequests/Bequest"> <xsl:variable name="pos" select="position()"/> <xsl:element name="AssetTotal"> <xsl:value-of select="AssetPercentage div 100 * ../../Assets/Miscellaneous[$pos]/Value"/> </xsl:element> </xsl:for-each> [Martin, thanks for the compliment. I think I explain things pretty well, sometimes more than I actually know. In that case, I rely on more knowledgeable folks like yourself to correct me :-]
March 15, 200520 yr Nice new hat QuinTech :-] It's difficult for we FileMaker developers to understand the "template" like mechanism of XSL. Some of what we think would require an explicit loop is already part of its matching ability. It procedes in a linear manner, with its "<xsl:template>" and "<xsl:for-each>" tags, but can also test against or get data anywhere else in the document. It can also put the same data twice, only get some data, and even add data. The test syntax, [this here=that there, or some other condition] or, in our case above, [that there=this here], can be all kinds of things. The trick is to be able to specify what/where in the hierarchy you want to test against. The variable was created specifically because when you're "that there" you're no longer "this here," so you need to capture "this here" first (just like setting a global) before you go. You can alternatively use the "current()" function, but that's messier. If what's in the brackets is a number, or evaluates to a number, instead of being a test, then it specifies the position at which to get data. We could also have solved the problem that way. But that would assume that there was exact symmetry between the Assets and Bequests. Maybe there is? <xsl:for-each select="Document/Transaction/Client/Matter/Bequests/Bequest"> <xsl:variable name="pos" select="position()"/> <xsl:element name="AssetTotal"> <xsl:value-of select="AssetPercentage div 100 * ../../Assets/Miscellaneous[$pos]/Value"/> </xsl:element> </xsl:for-each> [Martin, thanks for the compliment. I think I explain things pretty well, sometimes more than I actually know. In that case, I rely on more knowledgeable folks like yourself to correct me :-]
March 15, 200520 yr Nice new hat QuinTech :-] It's difficult for we FileMaker developers to understand the "template" like mechanism of XSL. Some of what we think would require an explicit loop is already part of its matching ability. It procedes in a linear manner, with its "<xsl:template>" and "<xsl:for-each>" tags, but can also test against or get data anywhere else in the document. It can also put the same data twice, only get some data, and even add data. The test syntax, [this here=that there, or some other condition] or, in our case above, [that there=this here], can be all kinds of things. The trick is to be able to specify what/where in the hierarchy you want to test against. The variable was created specifically because when you're "that there" you're no longer "this here," so you need to capture "this here" first (just like setting a global) before you go. You can alternatively use the "current()" function, but that's messier. If what's in the brackets is a number, or evaluates to a number, instead of being a test, then it specifies the position at which to get data. We could also have solved the problem that way. But that would assume that there was exact symmetry between the Assets and Bequests. Maybe there is? <xsl:for-each select="Document/Transaction/Client/Matter/Bequests/Bequest"> <xsl:variable name="pos" select="position()"/> <xsl:element name="AssetTotal"> <xsl:value-of select="AssetPercentage div 100 * ../../Assets/Miscellaneous[$pos]/Value"/> </xsl:element> </xsl:for-each> [Martin, thanks for the compliment. I think I explain things pretty well, sometimes more than I actually know. In that case, I rely on more knowledgeable folks like yourself to correct me :-]
March 15, 200520 yr Author Wow... so the bracketed code is just a reference to a particular cell within an array? That's a very clever use of the conditional then! I'm impressed! OR-- does the syntax: This[../AssetID=$AssID] translate to "the value of the element 'this' when the value of its sibling element 'AssetID' equals the value of the variable 'AssID'"? I'm just asking so i know when it might be appropriate for me to use it. I wish i still had some of those elf hats -- everyone seems to like them!
March 15, 200520 yr Author Wow... so the bracketed code is just a reference to a particular cell within an array? That's a very clever use of the conditional then! I'm impressed! OR-- does the syntax: This[../AssetID=$AssID] translate to "the value of the element 'this' when the value of its sibling element 'AssetID' equals the value of the variable 'AssID'"? I'm just asking so i know when it might be appropriate for me to use it. I wish i still had some of those elf hats -- everyone seems to like them!
March 15, 200520 yr Author Wow... so the bracketed code is just a reference to a particular cell within an array? That's a very clever use of the conditional then! I'm impressed! OR-- does the syntax: This[../AssetID=$AssID] translate to "the value of the element 'this' when the value of its sibling element 'AssetID' equals the value of the variable 'AssID'"? I'm just asking so i know when it might be appropriate for me to use it. I wish i still had some of those elf hats -- everyone seems to like them!
March 15, 200520 yr It's not "or", it's either, depending on what's in the brackets. I think that's the genius of xsl, it manages to do so much with so little special syntax. If what's in the bracket is a test, then it retrieves the value which matches the test. If what's in the bracket is a number, then the number is used to set the position in the hierarchy for that node in the node set (is this the right terminology?). The brackets can occur anywhere within the xpath, so from a FileMaker perspective it could be the ROW (record number), it could be the COL (field's position). From earlier:
March 15, 200520 yr It's not "or", it's either, depending on what's in the brackets. I think that's the genius of xsl, it manages to do so much with so little special syntax. If what's in the bracket is a test, then it retrieves the value which matches the test. If what's in the bracket is a number, then the number is used to set the position in the hierarchy for that node in the node set (is this the right terminology?). The brackets can occur anywhere within the xpath, so from a FileMaker perspective it could be the ROW (record number), it could be the COL (field's position). From earlier:
March 15, 200520 yr It's not "or", it's either, depending on what's in the brackets. I think that's the genius of xsl, it manages to do so much with so little special syntax. If what's in the bracket is a test, then it retrieves the value which matches the test. If what's in the bracket is a number, then the number is used to set the position in the hierarchy for that node in the node set (is this the right terminology?). The brackets can occur anywhere within the xpath, so from a FileMaker perspective it could be the ROW (record number), it could be the COL (field's position). From earlier:
March 15, 200520 yr Author The test should NOT explicitly use "Miscellaneous." Got it. I had actually accounted for that when i edited the XSLT based on what you'd said. Glad to see i got it right -- i'm learning. Did you learn all this from Beverly Voth's book, or are you more self-taught? I'm used to just learning things as i go, but this may be one case where it would be better for me to have a larger view. I'd seen you recommend the book at least once before...
March 15, 200520 yr Author The test should NOT explicitly use "Miscellaneous." Got it. I had actually accounted for that when i edited the XSLT based on what you'd said. Glad to see i got it right -- i'm learning. Did you learn all this from Beverly Voth's book, or are you more self-taught? I'm used to just learning things as i go, but this may be one case where it would be better for me to have a larger view. I'd seen you recommend the book at least once before...
March 15, 200520 yr Author The test should NOT explicitly use "Miscellaneous." Got it. I had actually accounted for that when i edited the XSLT based on what you'd said. Glad to see i got it right -- i'm learning. Did you learn all this from Beverly Voth's book, or are you more self-taught? I'm used to just learning things as i go, but this may be one case where it would be better for me to have a larger view. I'd seen you recommend the book at least once before...
March 15, 200520 yr I definitely learned quite a lot from Beverlys Voth's book. It is a "must read" if you work with FileMaker and XSL. It jumps right in, so it may be a bit stiff for raw beginners with no knowledge of XML at all (some of us); but this makes it also a good read for those with some knowledge, but not enough (most of the rest of us). Here are the example files from her book (from an email from her to another mailing list): Free download of _all_ example files: http://www.moonbow.com/xml/ I've also been messing about with this off and on (mostly off) for years. There is a fair amount of info online on various xml sites. The problem is that there just aren't many examples of intermediate templates, especially well-documented ones. There are the examples at FileMaker's site, which are well-documented, if you already have some idea what they're doing. I also have a beginner-intermediate book on XSL, "Sams Teach Yourself XSLT in 21 Days" (been about 6 months and counting :-). I got it from Amazon for about $10, 'cause it's kind of old. It's good, explains everything, slowly :-) You really need a basic book like this, because XSL is a logical language of its own, with many capabilities not covered in Beverly's book (the only FileMaker XML book). A fair amount of my "learning" has been hours of trial and error (still is); trying what I think might work, seeing what I get, then trying again. I really need another book, something like "problems and solutions using XSL and FileMaker." Maybe someday Beverly will write volume 2 :-]
March 15, 200520 yr I definitely learned quite a lot from Beverlys Voth's book. It is a "must read" if you work with FileMaker and XSL. It jumps right in, so it may be a bit stiff for raw beginners with no knowledge of XML at all (some of us); but this makes it also a good read for those with some knowledge, but not enough (most of the rest of us). Here are the example files from her book (from an email from her to another mailing list): Free download of _all_ example files: http://www.moonbow.com/xml/ I've also been messing about with this off and on (mostly off) for years. There is a fair amount of info online on various xml sites. The problem is that there just aren't many examples of intermediate templates, especially well-documented ones. There are the examples at FileMaker's site, which are well-documented, if you already have some idea what they're doing. I also have a beginner-intermediate book on XSL, "Sams Teach Yourself XSLT in 21 Days" (been about 6 months and counting :-). I got it from Amazon for about $10, 'cause it's kind of old. It's good, explains everything, slowly :-) You really need a basic book like this, because XSL is a logical language of its own, with many capabilities not covered in Beverly's book (the only FileMaker XML book). A fair amount of my "learning" has been hours of trial and error (still is); trying what I think might work, seeing what I get, then trying again. I really need another book, something like "problems and solutions using XSL and FileMaker." Maybe someday Beverly will write volume 2 :-]
March 15, 200520 yr I definitely learned quite a lot from Beverlys Voth's book. It is a "must read" if you work with FileMaker and XSL. It jumps right in, so it may be a bit stiff for raw beginners with no knowledge of XML at all (some of us); but this makes it also a good read for those with some knowledge, but not enough (most of the rest of us). Here are the example files from her book (from an email from her to another mailing list): Free download of _all_ example files: http://www.moonbow.com/xml/ I've also been messing about with this off and on (mostly off) for years. There is a fair amount of info online on various xml sites. The problem is that there just aren't many examples of intermediate templates, especially well-documented ones. There are the examples at FileMaker's site, which are well-documented, if you already have some idea what they're doing. I also have a beginner-intermediate book on XSL, "Sams Teach Yourself XSLT in 21 Days" (been about 6 months and counting :-). I got it from Amazon for about $10, 'cause it's kind of old. It's good, explains everything, slowly :-) You really need a basic book like this, because XSL is a logical language of its own, with many capabilities not covered in Beverly's book (the only FileMaker XML book). A fair amount of my "learning" has been hours of trial and error (still is); trying what I think might work, seeing what I get, then trying again. I really need another book, something like "problems and solutions using XSL and FileMaker." Maybe someday Beverly will write volume 2 :-]
March 15, 200520 yr My favorite is Michael Kay's XSLT : Programmer's Reference, 2nd ed., Wiley Publishing, 2003, ISBN 0-7645-4381-4. It's thick (939 pages), it's from one of the authors of XSLT, it's not about FM XML and XSLT, but it's both a general introduction and a reference, it explains every function in-depth with examples and has a large appendix that covers XML and XSLT products. Beverly Voth's book is good for learning, but not as a reference. And it does not cover FMS7A and Custom Web Publishing. As I have understood, XSLT is a so-called functional language. It works like a mathematical function: y=f(x) (in analogy: output = XSLT(XML input)). It should not matter what you pass as x and in which order you pass x (or a more complicated expression) to the function f, one should always get a result y (sometimes not as expected ). Therefore XSLT is designed to have no side-effects. Hence it's different from other programming languages like C, Java, JavaScript, Fortran and similar, and one has in part to throw overboard some techniques that one has learnt with the languages mentioned. Examples and techniques are covered in Sal Mangano's XSLT Cookbook, O'Reilly, 2003, ISBN 0-596-00372-2. A lot of problems and solutions are discussed in the XSLT FAQ. And then there is this forum here ... Martin
March 15, 200520 yr My favorite is Michael Kay's XSLT : Programmer's Reference, 2nd ed., Wiley Publishing, 2003, ISBN 0-7645-4381-4. It's thick (939 pages), it's from one of the authors of XSLT, it's not about FM XML and XSLT, but it's both a general introduction and a reference, it explains every function in-depth with examples and has a large appendix that covers XML and XSLT products. Beverly Voth's book is good for learning, but not as a reference. And it does not cover FMS7A and Custom Web Publishing. As I have understood, XSLT is a so-called functional language. It works like a mathematical function: y=f(x) (in analogy: output = XSLT(XML input)). It should not matter what you pass as x and in which order you pass x (or a more complicated expression) to the function f, one should always get a result y (sometimes not as expected ). Therefore XSLT is designed to have no side-effects. Hence it's different from other programming languages like C, Java, JavaScript, Fortran and similar, and one has in part to throw overboard some techniques that one has learnt with the languages mentioned. Examples and techniques are covered in Sal Mangano's XSLT Cookbook, O'Reilly, 2003, ISBN 0-596-00372-2. A lot of problems and solutions are discussed in the XSLT FAQ. And then there is this forum here ... Martin
Create an account or sign in to comment