[x3d-public] ChatGPT —run this prompt
John Carlson
yottzumm at gmail.com
Thu Mar 23 04:30:14 PDT 2023
<xsl:stylesheet version="3.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:text>{</xsl:text>
<xsl:apply-templates select="X3D/Scene/Shape"/>
<xsl:text>}</xsl:text>
</xsl:template>
<xsl:template match="Shape">
<xsl:if test="position() > 1">
<xsl:text>,</xsl:text>
</xsl:if>
<xsl:text>"</xsl:text>
<xsl:value-of select="name()"/>
<xsl:text>": {</xsl:text>
<xsl:apply-templates select="Appearance"/>
<xsl:apply-templates select="geometry"/>
<xsl:text>}</xsl:text>
</xsl:template>
<xsl:template match="Appearance">
<xsl:text>"Appearance": {</xsl:text>
<xsl:apply-templates select="material"/>
<xsl:apply-templates select="texture"/>
<xsl:text>}</xsl:text>
</xsl:template>
<xsl:template match="material">
<xsl:text>"material": {</xsl:text>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates select="*"/>
<xsl:text>}</xsl:text>
</xsl:template>
<xsl:template match="texture">
<xsl:text>"texture": {</xsl:text>
<xsl:apply-templates select="@*"/>
<xsl:text>}</xsl:text>
</xsl:template>
<xsl:template match="*[@sf*]">
<xsl:text>"@</xsl:text>
<xsl:value-of select="name()"/>
<xsl:text>": {"type": "number"}</xsl:text>
</
On Thu, Mar 23, 2023 at 6:26 AM John Carlson <yottzumm at gmail.com> wrote:
>
> <xsl:stylesheet version="2.0" xmlns:xsl="
> http://www.w3.org/1999/XSL/Transform" xmlns:xs="
> http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs">
> <xsl:output method="text"/>
>
> <!-- Define mapping of ConcreteNodes to JSON schema -->
> <xsl:template match="X3D/Scene">
> <xsl:text>{
</xsl:text>
> <xsl:apply-templates select="*"/>
> <xsl:text>}</xsl:text>
> </xsl:template>
>
> <xsl:template match="node()">
> <xsl:param name="indent" select="' '"/>
> <xsl:text>
</xsl:text>
> <xsl:value-of select="$indent"/>
> <xsl:text>"</xsl:text>
> <xsl:value-of select="name()"/>
> <xsl:text>" : {</xsl:text>
> <xsl:apply-templates select="@* | *"/>
> <xsl:value-of select="$indent"/>
> <xsl:text>}</xsl:text>
> </xsl:template>
>
> <xsl:template match="@*">
> <xsl:param name="indent" select="' '"/>
> <xsl:text>
</xsl:text>
> <xsl:value-of select="$indent"/>
> <xsl:text>"@</xsl:text>
> <xsl:value-of select="name()"/>
> <xsl:text>" : "</xsl:text>
> <xsl:value-of select="."/>
> <xsl:text>"</xsl:text>
> </xsl:template>
>
> <xsl:template match="node()[not(*)]">
> <xsl:param name="indent" select="' '"/>
> <xsl:text>
</xsl:text>
> <xsl:value-of select="$indent"/>
> <xsl:text>"-</xsl:text>
> <xsl:value-of select="name()"/>
> <xsl:text>" : { "type" : "</xsl:text>
>
>
> On Thu, Mar 23, 2023 at 6:23 AM John Carlson <yottzumm at gmail.com> wrote:
>
>> Here's an example of XSLT code that creates a mapping from the input X3D
>> unified object model ConcreteNodes to JSON subschema objects, using XSLT to
>> generate JSON. The code uses recursion and lists to handle a large number
>> of ConcreteNodes in shorter code, and puts "@" in front of SF-prefixed
>> field type property names and "-" in front of MF-prefixed field type
>> property names
>>
>> <xsl:stylesheet version="2.0" xmlns:xsl="
>> http://www.w3.org/1999/XSL/Transform">
>>
>> <xsl:output method="text" omit-xml-declaration="yes" encoding="UTF-8"
>> indent="yes"/>
>>
>> <xsl:variable name="SF_prefix" select="'@'"/>
>> <xsl:variable name="MF_prefix" select="'-'"/>
>>
>> <xsl:template match="/">
>> <xsl:text>{</xsl:text>
>> <xsl:apply-templates select="x3d/ConcreteNode"/>
>> <xsl:text>
}</xsl:text>
>> </xsl:template>
>>
>> <xsl:template match="ConcreteNode">
>> <xsl:text>
"</xsl:text>
>> <xsl:value-of select="@name"/>
>> <xsl:text>": {</xsl:text>
>> <xsl:apply-templates select="field"/>
>> <xsl:text>
}</xsl:text>
>> <xsl:if test="position() != last()">
>> <xsl:text>,</xsl:text>
>> </xsl:if>
>> </xsl:template>
>>
>> <xsl:template match="field">
>> <xsl:text>
"</xsl:text>
>> <xsl:value-of select="@name"/>
>> <xsl:text>": </xsl:text>
>> <xsl:choose>
>> <xsl:when test="@type = 'SFBool' or @type = 'SFDouble' or @type =
>> 'SFInt
>>
>>
>> On Thu, Mar 23, 2023 at 6:10 AM John Carlson <yottzumm at gmail.com> wrote:
>>
>>> I’ll be posting my chatGPT results here, probably in several messages.
>>>
>>> <xsl:stylesheet version="2.0" xmlns:xsl="
>>> http://www.w3.org/1999/XSL/Transform" xmlns:x3d="
>>> http://www.web3d.org/specifications/x3d-namespace" xmlns:json="
>>> http://www.json.org" exclude-result-prefixes="x3d"> <xsl:output method=
>>> "text" omit-xml-declaration="yes" /> <xsl:template match="/"> <xsl:text>
>>> {</xsl:text> <xsl:apply-templates select="//x3d:*" /> <xsl:text>
}</
>>> xsl:text> </xsl:template> <xsl:template match="x3d:*[@containerField =
>>> 'children']"> <xsl:text>"</xsl:text> <xsl:value-of select="local-name()"
>>> /> <xsl:text>":[</xsl:text> <xsl:apply-templates select="*" /> <xsl:text
>>> >]</xsl:text> <xsl:if test="following-sibling::*[@containerField =
>>> 'children']"> <xsl:text>,</xsl:text> </xsl:if> </xsl:template> <
>>> xsl:template match="x3d:*"> <xsl:text>"</xsl:text> <xsl:value-of select=
>>> "local-name()" /> <xsl:text>":{</xsl:text> <xsl:apply-templates select=
>>> "@*" /> <xsl:text>}</xsl:text> <xsl:if test="following-sibling::*[@containerField
>>> = 'children']"> <xsl:text>,</xsl:text> </xsl:if> </xsl:template> <
>>> xsl:template match="@*[starts-with(local-name(), 'SF')]"> <xsl:text>"@</
>>> xsl:text> <xsl:value-of select="local-name()" /> <xsl:text>":</xsl:text>
>>> <xsl:choose> <xsl:when test="starts-with(local-name(), 'SFInt')"> <
>>> xsl:text>"number"</xsl:text> </xsl:when> <xsl:when test="starts-with(local-name(),
>>> 'SFFloat')"> <xsl:text>"number"</xsl:text> </xsl:when> <xsl:when test="starts-with(local-name(),
>>> 'SFBool')"> <<span class="hljs-name" style="border: 0px solid rgb(217,
>>> 217, 227); box-sizing: border-box; --tw-border-spacing-x: 0;
>>> --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0;
>>> --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1;
>>> --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ;
>>> --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero:
>>> ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ;
>>> --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color:
>>> #fff; --tw-ring-color: rgba(59,130,246,0.5); --tw-ring-offset-shadow: 0 0
>>> transparent; --tw-ring-shadow: 0 0 t
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20230323/5cb264cd/attachment-0001.html>
More information about the x3d-public
mailing list