Subject: [xsl] creating arbitrary document references From: "Graydon graydon@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Tue, 28 May 2019 20:37:47 -0000 |
Hello -- I'm using XSLT 3.0 in oXygen 21.1. I have a directory structure of test documents generated by oXygen from (specialized) DITA XSD schemas. The schema generation process creates attribute cross reference attribute values; these do not resolve to an actual file. If I want the cross reference values to validate fully by oXygen DITA validation, the attribute value has to contain some actual file name or resolvable path. Using the recursive form of the EXPath function file:list() will get me all the documents in the test document directory structure. So presumably what I want to do is to permute the list of document locations into some random order using the permute form of random-number-generator() and then cycle through that list replacing each cross reference as I come to it with the next item in the list. Only of course that doesn't work at all; that's the mutable variable solution. Stuff the permuted list on to a global stack at the start, and then pop the stack as a value is wanted. (And if the stack runs out, shove the permuted sequence on to it again.) A random number solution, <xsl:variable name="pick" as="xs:integer" select="(((random-number-generator(current-dateTime())('number') * $range) mod $range) + 1) => xs:integer()"/> and then using $docNameSequence[$pick] to get a document name to reference gives me the same result each time. Reading the specification for random-number-generator() leaves me thinking that this is the correct behaviour. I care that the references are different, but not that they're in some order. So the "I don't know in what order the template is going to match various xref/@href nodes" isn't important. And it's not at all hard to get the sequence of file references available in the directory structure of test documents. I absolutely do not know that I have more files to reference than references to files, or the other way around; any useful solution needs to cope gracefully with either case. So how can I pick a random member of that sequence of files-available-to-be-referenced each time the template matches and I need to replace the value of @href with that arbitrary actual file reference? Thanks! Graydon
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] [ANN] Balisage Call for Late-, B Tommie Usdin btusd | Thread | Re: [xsl] creating arbitrary docume, Martin Honnen martin |
[xsl] [ANN] Balisage Call for Late-, Tommie Usdin btusdin | Date | Re: [xsl] creating arbitrary docume, Martin Honnen martin |
Month |